asp.net-mvc - Azure 托管的 ASP.NET MVC 站点删除与客户端缓存相关的 HTTP header

标签 asp.net-mvc caching iis azure

我们最近开始将一些 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-ControlEtagExpiresLast-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/

相关文章:

c# - 如何对使用 ServiceStack 的 JsonServiceClient() 的 ASP.NET MVC 操作进行单元测试?

c# - 如何在 ASP .NET MVC 中使用 Resources 和 CultureInfo 更改站点语言?

ruby-on-rails - 在 Ruby on Rails 应用程序中开发和测试缓存的最佳方法是什么?

internet-explorer - 从带有查询字符串的 URL 缓存

ASP.NET/IIS 安全(Windows 身份验证)

c# - MVC ActionLink 从当前 url 添加所有(可选)参数

c# - Context.UpdateObject() 不传递对象中的集合

django - 明确清除 django memcached flush/cache() 或删除特定的 per-view-cache 键

c# - IIS Express - 增加内存限制

perl - 如何强制 IIS 7 刷新输出?