【问题标题】:Vary: * incorrectly added to http header response (asp.net mvc3)变化:* 错误地添加到 http 标头响应 (asp.net mvc3)
【发布时间】:2012-08-01 11:41:24
【问题描述】:

我正在使用以下输出缓存配置文件:

<add name="MyFunkyProfile" duration="180" varyByParam="*" location="ServerAndClient" />

在开发中,我有一个带有一个 Vary 条目的响应标头:

HTTP/1.1 200 OK
Server: Microsoft-IIS/7.5
...
Vary: Accept-Encoding
Cache-Control: private, max-age=180, s-maxage=0
...

当我部署我的应用程序时,我在响应中插入了一个额外的 Vary 条目:

HTTP/1.1 200 OK
Server: nginx
...
Vary: Accept-Encoding
Cache-Control: private, max-age=180, s-maxage=0
...
Vary: *
...

为什么会有这个额外的 Vary 条目?这会阻止缓存正常工作。

任何想法如何解决这个问题?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 http-headers outputcache appharbor


    【解决方案1】:

    您是否尝试在配置文件/配置文件中将varyByParam 设置为None?见http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx

    另外,只是在这里猜测 - dev 和“live”之间的配置文件是否不同,例如varyByParam 可能设置不同?

    注意:我刚刚加入 SO,所以还不能添加 cmets(我会这样做,而不是将其作为回复发布)。

    【讨论】:

    • Can't set varyByParam to None 这会产生错误的结果。不,varyByParam 在 dev 和 prod 中的设置方式相同。服务器虽然不同;开发服务器与 IIS。
    【解决方案2】:

    Vary: Accept-Encoding 标头由 AppHarbor 路由层插入。标头对于获取下游代理(通常是像 AWS CloudFront 或类似的 CDN)以正确缓存 gzip 和非 gzip 版本的内容是必需的。这个question has additional details

    您能否详细说明这是如何给您的应用程序带来问题的?

    【讨论】:

    • Vary 星由框架默认插入,除非指定了 varyByParam="" (请注意,varyByParam="*" 仍然会生成变量星)请参阅 Atwood 的答案stackoverflow.com/a/486072/125804。解决了这个问题。将在此处发布解决方法作为答案。
    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2015-07-19
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多