【问题标题】:Azure-hosted ASP.NET MVC site drops client cache-related HTTP headersAzure 托管的 ASP.NET MVC 站点丢弃与客户端缓存相关的 HTTP 标头
【发布时间】:2013-07-23 16:03:10
【问题描述】:

我们最近开始将一些 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?是否有可能被忽略的基本配置更改?

提前致谢

【问题讨论】:

  • 我也有同样的问题。设置标头(例如 Response.Cache.SetExpires)在本地工作,但在部署时会被剥离...
  • 我不确定,但根据这篇 msdn 文章 msdn.microsoft.com/en-us/library/windowsazure/gg680299.aspx '如果您想以编程方式缓存应用程序内容,请确保通过将 HttpCacheability 设置为 Public 将内容标记为可缓存。'跨度>
  • 嘿,这样我可以更好地理解 - 您使用的是 Azure 网站还是 Azure VM?另外,您如何配置 HTTP 缓存?在 web.config 中,通过 IIS,以编程方式 (OutputCache)?
  • 在以前的环境中添加缺失标签的设置在哪里?他们是自动添加的(你没有手动设置这个标题)?通过 HttpModules?通过 IIS 设置?
  • @WolfyUK - 你解决过这个问题吗?

标签: asp.net-mvc caching iis azure


【解决方案1】:
X-Powered-By:           ARR/2.5, ASP.NET

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 2019-11-24
      • 2011-12-03
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2018-07-16
      相关资源
      最近更新 更多