我有几个ActionMethods
从数据库返回的内容不经常更改(例如:可用 ZIP 区域的多边形列表,以 json 形式返回;每年更改两次)。
我知道,有[OutputCache(...)]
属性,但这有一些缺点(长时间客户端缓存不好;如果服务器/iis/进程重新启动,服务器端缓存也会停止)
我想要的是,MVC 将结果存储在文件系统中,计算哈希,如果哈希没有改变 - 它返回一个 HTTP 状态代码 304 --> 就像默认情况下对图像所做的那样。
有人知道解决方案吗?
我有几个ActionMethods
从数据库返回的内容不经常更改(例如:可用 ZIP 区域的多边形列表,以 json 形式返回;每年更改两次)。
我知道,有[OutputCache(...)]
属性,但这有一些缺点(长时间客户端缓存不好;如果服务器/iis/进程重新启动,服务器端缓存也会停止)
我想要的是,MVC 将结果存储在文件系统中,计算哈希,如果哈希没有改变 - 它返回一个 HTTP 状态代码 304 --> 就像默认情况下对图像所做的那样。
有人知道解决方案吗?
我认为尝试在文件系统上缓存数据是个坏主意,因为:
如果我是你,我会尽可能简单。将数据存储在 Application 容器中。是的,每次应用程序启动时您都必须重新加载它,但这根本不是问题,因为应用程序不应该经常重新启动。如果你有一个网络农场,也可以考虑使用一些分布式缓存,比如 App Fabric,以免在不同服务器上的应用程序容器中产生不同的数据。
还有一个重要的注意事项。缓存意味着真正的快速访问,您无法使用文件系统或数据库存储来实现它,这是您应该考虑的内存存储。