gpt4 book ai didi

asp.net - 如何防止在 AppHarbor 中丢失我的 Cache-Control header 的 Max-Age 部分?

转载 作者:可可西里 更新时间:2023-11-01 17:12:11 26 4
gpt4 key购买 nike

我有一个 ASP.NET/MVC 网络应用程序,在本地运行时会生成此 header :

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 header 的 Max-Age 部分,并用一个我不同步的日期覆盖我的日期。

我的目标是通过 CDN 为 JavaScript 提供非常短的最大年龄,以便可以快速推出更改。频繁更改 url 不是一种选择。

有人知道怎么解决吗?

最佳答案

一所大学更仔细地研究了 RFC注意到它看起来像服务器和浏览器使用的此 header 的常见单行形式:

Cache-Control: public, max-age=X

实际上无效。将 header 的两部分分成两行,如下所示:

Cache-Control: public
Cache-Control: max-age=X

有效!所以在我的 .net 代码中,这个:

response.Cache.SetCacheability(HttpCacheability.Public);
response.Cache.SetMaxAge(MaxAge);

变成这样:

response.AddHeader("Cache-Control", "public");
response.AddHeader("Cache-Control", "max-age=" + (int)MaxAge.TotalSeconds);

现在我可以从 AppHarbor 获取 max-age。

关于asp.net - 如何防止在 AppHarbor 中丢失我的 Cache-Control header 的 Max-Age 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11678333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com