【发布时间】: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