【问题标题】:How to use OutputCacheLocation.ServerAndClient without Vary: * HTTP header如何在没有 Vary 的情况下使用 OutputCacheLocation.ServerAndClient:* HTTP 标头
【发布时间】: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


    【解决方案1】:

    Response.Cache.SetOmitVaryStar(true);

    【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 2016-02-05
    • 2012-08-23
    • 2017-07-05
    • 2023-03-30
    • 2010-12-30
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多