我们最近开始将我们的一些 ASP.NET MVC 网站从我们自己的托管环境迁移到 Azure。我们看到的问题之一是客户端缓存在交付动态创建的内容时似乎无法正常工作。具体来说,代码中添加到 HTTP 响应的缓存相关标头被剥离。
例如,在旧环境中返回以下标头,以告知客户端内容可能被缓存:
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 上,会返回以下标头:
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
头已被删除。
我已经看到了一些关于静态内容缓存的建议,但我认为这些建议在这种情况下不会有所帮助。Azure CDN 的结构是否会以这种方式阻止缓存?是否应该改用 Azure blob?是否有可能被忽略的基本配置更改?
提前致谢