【发布时间】:2021-07-23 07:11:14
【问题描述】:
我的前端在 nginx 上运行,我正在提供一堆由 react 构建的 .chunk.js 文件。
每次更新前端时,我都会重建 docker 映像并更新 kubernetes 部署。但是,一些用户可能仍在尝试获取旧的 js 文件。
我希望喜欢 Google Cloud CDN 提供旧文件的过时缓存版本,但似乎 it will only serve stale content in the event of errors or the server being unreachable, not a 404.
Cloud CDN 还有一种叫做“负缓存”的东西,however that seems to be for deciding how long a 404 is cached.
--> 在 Google Cloud 上临时提供旧文件的最佳方式是什么?这可以通过 Cloud CDN 完成吗?
(理想情况下,不需要一些需要部署旧文件的时髦构建过程)
【问题讨论】:
-
为什么要临时提供旧文件?也许重新考虑您的部署?
-
CDN 不会永远缓存对象。从缓存中刷新对象后,您的策略将不起作用...
-
@MartinZeitler 如果用户加载旧的 index.html,它会尝试加载旧的 js 文件(这有点必要,并且创建 react 应用程序故意在名称中包含文件的哈希以防止js文件的混合版本)。尤其是在延迟加载的情况下,用户可能至少有几秒钟甚至几分钟都不会加载脚本。
-
@JohnHanley 我的目标不是永远缓存它们,只是一段合理的时间(谷歌最多可以缓存一周,我认为甚至不需要 1 天)。我可以通过返回 500 而不是 404 来达到相同的效果(Google 会认为存在服务器错误并返回它已缓存长达一周的陈旧文件)但是用 500 替换 404 的状态似乎......非常不好的做法。
-
嘿@DemiPixel 你找到解决方案了吗?我也有这个问题,新部署导致旧 JS 文件哈希 # 请求的 404 响应,这是部署后约一个小时的问题。
标签: nginx kubernetes google-cloud-platform google-cloud-cdn