变化:*错误地添加到http标头响应(asp.net mvc3)

时间:2012-08-03 12:08:50

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

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

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

在dev中,我有一个带有一个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条目?这会阻止缓存正常工作。

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

2 个答案:

答案 0 :(得分:0)

您是否尝试在个人资料/配置文件中将varyByParam设置为None?请参阅http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx

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

注意:我刚刚加入了SO,所以暂时无法添加评论(我会做的,而不是将其作为回复发布)。

答案 1 :(得分:0)

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

您能详细说明这是如何导致您的应用程序出现问题吗?