我尝试在 MVC View 上使用 OutputCache 进行服务器和客户端缓存,但将 Location 设置为 ServerAndClient 会强制设置 HTTP header Vary: *
,这在很大程度上违背了客户端的目的缓存(它告诉浏览器在每次使用资源时检查新鲜度)。
我希望浏览器将文件缓存 24 小时,并且仅在更改添加到查询字符串的 LastModifield 参数时才发出另一个请求。如果我只有客户端作为位置,但我也希望服务器缓存该文件,这样当其他用户请求相同的资源时就不需要重新生成它。
该资源基于一个很少更新的数据库(可能每月一次或两次,我知道它什么时候发生变化),并且该资源可能会受到很大的打击,所以我不想全部生成它时间甚至处理修改后的条件请求。
我的 OutputCache 属性是:
[OutputCache(Location = OutputCacheLocation.ServerAndClient, Duration = 86400, VaryByParam = "LastModified")]
我尝试扩展 OutputCacheAttribute 类并重写所有 On* 方法并删除 Vary http header ,但在调用所有这些方法之后,似乎不会添加 Vary header 。
最佳答案
Response.Cache.SetOmitVaryStar(true);
关于c# - 如何在没有 Vary 的情况下使用 OutputCacheLocation.ServerAndClient : * HTTP header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994836/