0

我有几个ActionMethods从数据库返回的内容不经常更改(例如:可用 ZIP 区域的多边形列表,以 json 形式返回;每年更改两次)。

我知道,有[OutputCache(...)]属性,但这有一些缺点(长时间客户端缓存不好;如果服务器/iis/进程重新启动,服务器端缓存也会停止)

我想要的是,MVC 将结果存储在文件系统中,计算哈希,如果哈希没有改变 - 它返回一个 HTTP 状态代码 304 --> 就像默认情况下对图像所做的那样。

有人知道解决方案吗?

4

1 回答 1

0

我认为尝试在文件系统上缓存数据是个坏主意,因为:

  1. 从文件系统读取数据不会比从数据库中读取数据快得多,即使您已经拥有 json 格式的数据。
  2. 您将添加大量逻辑来计算和比较哈希。也可以从文件中读取数据。这意味着新的错误,更多的复杂性。

如果我是你,我会尽可能简单。将数据存储在 Application 容器中。是的,每次应用程序启动时您都必须重新加载它,但这根本不是问题,因为应用程序不应该经常重新启动。如果你有一个网络农场,也可以考虑使用一些分布式缓存,比如 App Fabric,以免在不同服务器上的应用程序容器中产生不同的数据。

还有一个重要的注意事项。缓存意味着真正的快速访问,您无法使用文件系统或数据库存储来实现它,这是您应该考虑的内存存储。

于 2012-12-20T16:25:33.840 回答