【发布时间】:2016-05-01 21:27:51
【问题描述】:
我正在尝试在 MVC 视图上将 OutputCache 用于服务器和客户端缓存,但将 Location 设置为 ServerAndClient 会强制设置 HTTP 标头 Vary: *,这在很大程度上违背了客户端缓存的目的(它告诉浏览器每次使用资源时检查新鲜度)。
我希望浏览器将文件缓存 24 小时,并且仅在我更改添加到查询字符串的 LastModifield 参数时才发出另一个请求。如果我只有客户端作为位置,但我也希望服务器缓存文件,这样它就不需要在另一个用户请求相同的资源时重新生成它。
该资源基于一个很少更新的数据库(可能每月一次或两次,我知道它什么时候发生了变化)并且该资源可能会受到非常严重的影响,所以我不想全部生成它时间甚至处理修改后的条件请求。
我的 OutputCache 属性是:
[OutputCache(Location = OutputCacheLocation.ServerAndClient, Duration = 86400, VaryByParam = "LastModified")]
我已尝试扩展 OutputCacheAttribute 类并覆盖所有 On* 方法并删除 Vary http 标头,但在调用所有这些方法之后似乎才添加 Vary 标头。
【问题讨论】:
标签: c# asp.net-mvc caching asp.net-mvc-5