【发布时间】:2012-01-08 13:07:22
【问题描述】:
我们正在为一系列澳大利亚假日公园开发 ASP.Net MVC/Jquery 移动项目。大部分公园相关数据存储在 SQL 数据库中。
目前正在开发的部分之一是“当地景点”。此部分的数据来自澳大利亚旅游数据仓库 (ATDW) 拥有的 Web 服务。尽管加载视图最多可能需要 45 秒,但幸运的是,数据是相当静态的。我们计划缓存它,并每周刷新一次。这个数据也比较大。我认为它不适合内存缓存。
我对 System.Runtime.ObjectCache 的基于文件的实现感兴趣。
我已经搜索了互联网,但我没有找到任何这样的例子。我的问题很笼统,我正在寻找有关读取/写入基于文件的缓存的建议。数据将由直接从控制器调用的服务层中的类 CachedLocalAttractionsService.cs 检索。
请提供以下建议: 在磁盘上存储名称/值对, 以 Cache[key] 方式序列化大量可检索的数据, 到目前为止,我在 6 小时的搜索中可能遗漏的任何示例。
【问题讨论】:
-
虽然我热衷于创建 ObjectCache 的自定义实现,但我最终走上了一条不同的道路。我没有依赖 FileCache,而是将大部分存储逻辑移到了服务中,并放弃了 ObjectCache 带来的优势,即失效策略。我使用协议缓冲区 dll 对硬盘进行序列化,并且缓存键被滚动到文件名中,而不是检查缓存,即如果 cache[key] != null,而是检查磁盘,即 if (( str = FileCache.Read(key)) != null)
标签: asp.net caching c#-4.0 file-io