【发布时间】:2011-06-23 17:13:39
【问题描述】:
我有设置响应的缓存控制标头的 ASP.NET MVC 操作过滤器。一切正常,除非我将其发布到 Web 服务器。
当我通过 localhost 运行它时,我得到以下信息:
Cache-Control:public, max-age=172800
Connection:Close
Content-Length:15057
Content-Type:application/pdf
Date:Thu, 23 Jun 2011 17:09:09 GMT
Server:ASP.NET Development Server/9.0.0.0
X-AspNet-Version:2.0.50727
X-AspNetMvc-Version:2.0
在现场运行时
Cache-Control:public
Content-Length:15057
Content-Type:application/pdf
Date:Thu, 23 Jun 2011 17:09:45 GMT
Server:Microsoft-IIS/6.0
X-AspNet-Version:2.0.50727
X-AspNetMvc-Version:2.0
X-Powered-By:ASP.NET
所以由于某种原因max-age 被清除了,我无法弄清楚。
我能想到的唯一区别是开发站点通过 Cassini Web 服务器,而现场是 IIS,所以也许 IIS 正在清除 max-age?
我必须做些什么才能将 max-age 值保留在缓存控制标头中?
编辑: 这是 web.config 中 system.webserver 节点的图片,以防有什么可以查看的。
【问题讨论】:
-
您是否检查了 IIS 中的 Http Headers 选项卡?
-
@Jay 我刚刚在 HTTP 标头选项卡中将其修改为在两天后过期,但响应标头仍然没有变化。可能是我的 web.config 吗?也许一些 HttpModule 弄乱了标头?
-
我对此表示怀疑。不能 100% 做到这一点,但 IIS 是最后一个在响应发出时触及响应的。从那时起,外部服务器/网络节点可能正在使用标头?
标签: asp.net asp.net-mvc iis-6 cache-control