我们正在尝试将应用程序迁移或前端到kubernetes。但是在进行滚动更新时,由于在URI中使用唯一的sha1哈希进行缓存,用户可能会获得404。
示例:
构建#1后的简化目录结构
/index.html
/static/147964a6b54c/app.js
/static/147964a6b54c/style.css
构建#2后的简化目录结构
/index.html
/static/978b4ccd1dbb/app.js
/static/978b4ccd1dbb/style.css
该应用使用Cache-Control:public
我们在kubernetes中运行了10个pod。
我们以60秒的默认更新间隔开始滚动更新。
现在可能发生的问题是新的index.html向app.js请求新的URI(使用新的哈希),但它被重定向到运行旧应用程序的容器,该容器没有该路径,因此抛出一个404.
一种解决方案是仅依赖于etag标头,但这使得客户端每次都进行往返,而不应该这样做。 index.html应该使用此解决方案而不是其他资产。
我想知道是否有其他人遇到过这种情况并找到了一个很好的解决方案?