if-modified-因为在Azure Web App中没有按预期运行

时间:2016-08-09 18:11:51

标签: asp.net angularjs azure iis azure-web-sites

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

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

边缘

  • 接受:application / javascript, / ; Q = 0.8
  • 接受编码:gzip,deflate
  • 接受语言:en-US
  • 连接:Keep-Alive
  • Cookie:ai_user = T9jXc | 2016-08-08T05:44:23.776Z; ai_session = 2GcvV | 1470765398272 | 1470765399564
  • 主持人:app.somehost.com
  • If-Modified-Since:Mon,08 Aug 2016 16:34:46 GMT
  • If-None-Match:“0172c692f1d11:0”
  • Referer:https://app.somehost.com/
  • User-Agent: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
  • 缓存控制:最大年龄= 0
  • 连接:保活
  • 曲奇: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
  • 如果-无 - 匹配: “0172c692f1d11:0”
  • 的Referer:https://app.somehost.com/
  • User-Agent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 52.0.2743.116 Safari / 537.36

1 个答案:

答案 0 :(得分:0)

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

BundleTable.EnableOptimizations = true