这是我的index.html:
<!DOCTYPE html> <html lang="en"> <head> <Meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> <Meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"/> <Meta http-equiv="cache-control" content="max-age=0" /> <Meta http-equiv="cache-control" content="no-cache" /> <Meta http-equiv="expires" content="-1" /> <Meta http-equiv="expires" content="Tue,01 Jan 1980 1:00:00 GMT" /> <Meta http-equiv="pragma" content="no-cache" /> <link rel="stylesheet" href="/static/css/bootstrap.min.css"/> </head> <body> <div id="app"></div> </body> </html>
有没有办法强制它每次加载新代码或(理想情况下)检查旧文件是否从服务器中消失,然后刷新浏览器?
@H_403_8@解决方法
我们还努力维护版本,并且如果出现问题,我们可以快速重新部署以前的版本.
我们的解决方案(使用基于vue-cli Webpack的项目):
1)我们构建分发版本以具有特定于版本的文件夹而不是“静态”.这还有助于我们跟踪构建并在需要时“撤消”部署.要更改“静态”目录,请在index.js中的“build”下更改“assetsSubDirectory”,并将“assetsPublicPath”更改为CDN路径.
2)我们使用Webpack Assets Manifest构建一个指向所有资产的manifest.json文件.我们的清单包含所有文件的哈希,因为它是一个高安全性的应用程序.
3)我们将版本化文件夹(包含js和css)上传到我们的CDN.
4)(可选)我们在后端服务器上托管动态index.html文件.后端服务器使用从manifest.json上的数据中提取的模板系统填充样式表和脚本的链接(参见#5).这是可选的,因为你可以使用force-reload选项,如下面的评论,这不是一个很好的经验,但确实有效.
5)要发布新版本,我们将manifest.json发布到后端服务器.我们通过GraphQL端点执行此操作,但您可以手动将json文件放在某处.我们将其存储在数据库中并使用它来填充index.html,并使用它来验证使用文件哈希的文件(以验证我们的CDN没有被黑客入侵).
结果:立即更新并轻松跟踪和更改您的版本.我们发现它会立即在几乎所有用户的浏览器中推出新版本.
另一个好处是:我们正在构建一个需要高安全性的应用程序,并且在我们(已经安全的)后端托管index.html使我们能够更轻松地通过我们的安全审计.
@H_403_8@ @H_403_8@