【发布时间】:2012-07-26 21:31:58
【问题描述】:
我有一个 ASP.NET / MVC Web 应用程序,它在本地运行时会生成此标头:
Cache-Control:public, max-age=3
Connection:Close
Content-Encoding:gzip
Content-Length:287122
Content-Type:text/javascript
Date:Thu, 26 Jul 2012 21:21:26 GMT
ETag:K5fBpkMM+t9XPl07ydQ54pR6bg8=
Expires:Thu, 26 Jul 2012 21:21:29 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
但是当在他们的代理后面的 AppHarbor 中运行时,我得到的标题是:
Cache-Control:public
Connection:keep-alive
Content-Encoding:gzip
Content-Length:287122
Content-Type:text/javascript
Date:Thu, 26 Jul 2012 21:22:49 GMT
ETag:K5fBpkMM+t9XPl07ydQ54pR6bg8=
Expires:Thu, 26 Jul 2012 21:22:41 GMT
Server:nginx
AppHarbor 正在剥离我的 Cache-Control 标头的 Max-Age 部分,并用我不与之同步的日期踩踏我的日期。
我的目标是通过 CDN 提供 JavaScript 服务,其最大使用期限非常短,以便可以快速推出更改。经常更改网址不是一种选择。
有谁知道如何解决这个问题?
【问题讨论】:
-
你打算在 AppHarbor 之外运行你的 CDN 吗?
-
3 秒似乎是一个相当短的缓存时间——事实上它在某种程度上延伸了“缓存”这个词的定义。 CDN 服务器不会经常访问您的服务器进行更新吗?将版本查询字符串添加到页面中的脚本引用以控制缓存行为怎么样?
标签: asp.net asp.net-mvc http cache-control appharbor