c# - 如何在没有 Vary 的情况下使用 OutputCacheLocation.ServerAndClient : * HTTP header

标签 c# asp.net-mvc caching asp.net-mvc-5

我尝试在 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/

相关文章:

asp.net - 在ASP.Net MVC中创建模拟URL引用程序以进行单元测试

c# - 将 DbSet 和查询结果分配给同一个变量

php - 缓存大数据、替代查询或其他索引?

java - 咖啡因缓存: write() never get called

c# - 当它附加到刚体时获取统一对撞机的游戏对象

c# - 构建单文件应用

asp.net-mvc - 如何在正则表达式中忽略大小写?

c# - Ultragrid 子行

c# - ObjectDataSource 未在配置数据源中显示数据对象

.htaccess - FilesMatch 导致内部服务器错误