12

我们最近开始将我们的一些 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-ControlEtagExpiresLast-Modified头已被删除。

我已经看到了一些关于静态内容缓存的建议,但我认为这些建议在这种情况下不会有所帮助。Azure CDN 的结构是否会以这种方式阻止缓存?是否应该改用 Azure blob?是否有可能被忽略的基本配置更改?

提前致谢

4

2 回答 2

1
X-Powered-By:           ARR/2.5, ASP.NET

ARR 代表应用程序请求路由。

转到inetmgr UI 并单击服务器名称,您将找到“应用程序请求路由缓存”选项。

你会看到“缓存配置”,在那里检查选项。另外,检查那里的“缓存控制规则”。单击“添加规则...”并尝试使用它。

于 2015-05-11T15:13:34.503 回答
0

ARR 背后的 Azure 网站。ARR 将删除一些 HTTP 标头并添加自己的标头,这不是您可以直接控制的。更适合您的问题的方法可能是将 Azure CDN 用于静态内容。这确实注意并使用了缓存控制标头。您可以在 blob 存储容器之上运行 CDN。

于 2015-07-01T20:37:12.073 回答