【问题标题】:if-modified-since not functioning as expected in Azure Web Appif-modified-since 在 Azure Web App 中未按预期运行
【发布时间】:2025-11-26 04:55:01
【问题描述】:

我有一个 Angular 1.x SPA 应用程序,它使用 Azure 中作为 Web 应用程序托管的 ASP Web API 构建。当我部署新代码时,Chrome(不是 Edge 或 IE)等浏览器无法获取基于 If-modified-since 或 ETAG 的新代码。当前的解决方法是让用户按 CTRL + F5 强制下载。 Edge 和 Chrome 之间的请求标头存在一些差异,这可以解释这一点,但我对 HTTP 中的缓存控制机制不是很熟悉。

我的主要问题是这是一种预期行为,我需要在客户端代码中特意检测到这一点并强制刷新,还是 IIS 应该默认处理这种情况?其次,这是我可以通过更改 web.config 来解决的问题吗?

边缘

  • 接受:应用程序/javascript,/; q=0.8
  • 接受编码:gzip、放气
  • 接受语言:en-US
  • 连接:保持活动状态
  • Cookie:ai_user=T9jXc|2016-08-08T05:44:23.776Z; ai_session=2GcvV|1470765398272|1470765399564
  • 主机:app.somehost.com
  • If-Modified-Since:2016 年 8 月 8 日星期一 16:34:46 GMT
  • 如果没有匹配:“0172c692f1d11:0”
  • 推荐人:https://app.somehost.com/
  • 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393

  • 接受:/
  • 接受编码:gzip、deflate、sdch、br
  • 接受语言:en-US,en;q=0.8
  • Cache-Control:max-age=0
  • 连接:保持活动状态
  • Cookie:ai_user=WXgAN|2016-08-09T16:28:50.251Z; ai_session=nV7TD|1470765376324|1470765376960
  • 主机:app.somehost.com
  • If-Modified-Since:Mon, 08 Aug 2016 16:34:46 GMT
  • If-None-Match:"0172c692f1d11:0"
  • 推荐人:https://app.somehost.com/
  • User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36

【问题讨论】:

  • 嗨,史密斯,您的应用程序是纯 Angular SPA 还是以 Angular SPA 作为前端客户端的 asp.net 应用程序。或者您能告诉我们如何重现您的问题吗?
  • 是一个使用 ASP .Net 提供静态内容的 SPA 应用程序。除了*页面,没有 RAZOR 视图或 CSHTML。
  • 高级复制步骤是 1) 将站点部署到 azure。 2)用chrome访问网站。 3)部署更新的JS文件,例如角度控制器。 4) 重新访问页面以及 HTTP 304 的内容。要了解更具体的步骤,我需要发现更多有关根本原因的信息。一个可能有趣的方面是,有问题的内容作为捆绑包的一部分被请求,但捆绑包优化目前已关闭。我不知道这是否会影响这个问题。

标签: asp.net angularjs azure iis azure-web-app-service


【解决方案1】:

已通过优化捆绑包解决了该问题。我关闭了优化,因为它破坏了不支持缩小的依赖项。为了解决这个问题,我从包中删除了有问题的 .js 文件并直接引用它们。然后在 BundleConfig.cs 中启用优化

BundleTable.EnableOptimizations = true

【讨论】: