表现出来是问题所述,我这里讲下复现(人工复现)路径:
我将系统部署回老版本 1.1.0 ,然后同事访问系统(为 1.1.0 ),我再部署新版本 1.2.0 ,同事 F5 刷新页面,访问系统。前端架构是用的微前端(老版本用的 micro-app ,新版本用的 qiankun ),获取子应用当然是微前端沙箱的 fetch (但是我理解这里都是没有影响的)。
重点来了:同事机器访问 1.1.0 后就相当于缓存住了,之后访问 1.2.0 ,子应用的资源是 fetch 200 ,disk-cache ,然后请求头只有 Referer, User-Agent ,响应头里有 Cache-Control no-cache Last-Modified, Etag ,也就是 1.1.0 版本的子应用 entry (老的 html )
我本机无法复现,查看 nginx 日志,确实同事机器是只在访问 1.1.0 的时候打到日志,后面都是走的本机缓存,我无法理解的是为什么 no-cache 会表现出强缓存的现象?
我现在解决是先改了 html 策略为 no-store (而且吊诡的是,nginx 配置加了之后除了 Cache-Control no-cache 这一行,还多了一行 no-store ,难以理解),然后子应用访问时加时间戳(主要解决问题是这个方式,其实标题问题没有解决)
我现在猜测是第一次访问时,不知道哪里的中间代理(中间人)加了强缓存(但是响应头的 Last Modified Etag 又是哪里来的?),或者用的东方通有什么 bug ?(但配置文件跟 nginx 一样的)
测试浏览器都是 Chrome ,本机是最新 110 版本的,复现同事版本分别是 122 (最新)、96
想问问社区大佬原因或者排查思路?赐教
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.