我们最近开始将一些 ASP.NET MVC 网站从我们自己的托管环境迁移到 Azure。我们看到的问题之一是,在交付动态创建的内容时,客户端缓存似乎无法正常工作。具体来说,代码中添加到 HTTP 响应中的与缓存相关的 header 将被删除。
例如,在旧环境中返回以下 header ,以告知客户端内容可能会被缓存:
Cache-Control: public, max-age=31533144
Content-Disposition: attachment; filename=picture.png
Content-Length: 64326
Content-Type: image/png
Date: Tue, 23 Jul 2013 15:44:57 GMT
Etag: "845D3DD630A7AEF5B68EA7A09B670A4D"
Expires: Fri, 23 Aug 2013 14:57:22 GMT
Last-Modified: Tue, 23 Jul 2013 14:57:22 GMT
Server: Microsoft-IIS/7.5
但在 Azure 上,会返回以下 header :
Content-Disposition: attachment; filename=picture.png
Content-Length: 64326
Content-Type: image/png
Date: Tue, 23 Jul 2013 15:44:57 GMT
Server: Microsoft-IIS/8.0
X-Powered-By: ARR/2.5, ASP.NET
如您所见,Cache-Control
、Etag
、Expires
和 Last-Modified
header 具有已被删除。
我已经看到了许多有关静态内容缓存的建议,但我不认为这些建议对这种情况有帮助。 Azure CDN 的结构是否会阻止以这种方式进行缓存?应该改用 Azure blob 吗?是否存在可能被忽视的基本配置更改?
提前致谢
最佳答案
X-Powered-By: ARR/2.5, ASP.NET
ARR 代表应用程序请求路由。
转到 inetmgr UI 并单击服务器名称,您将找到“应用程序请求路由缓存”选项。
您将看到“缓存配置”,检查那里的选项。另外,检查“缓存控制规则”。单击“添加规则...”并尝试使用它。
关于asp.net-mvc - Azure 托管的 ASP.NET MVC 站点删除与客户端缓存相关的 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815319/