我有一个VueJS应用程序。当我运行npm run build
时,它会创建一组新的dist/*
文件,但是,当我将它们加载到服务器上时(在删除旧版本之后)并在浏览器中打开该页面,它会加载旧版本(来自缓存)。当我刷新页面时,它加载新代码没有问题。VueJS /浏览器缓存生成版本
这是我的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>
有没有办法迫使它每次或(理想)加载新的代码,以检查是否旧文件从服务器了,然后刷新浏览器吗?
您是否尝试过为每个构建的文件名添加随机哈希?这将强制浏览器“刷新”并加载新版本,但如果请求相同的文件散列,它仍会缓存它。 Angular 2做到了这一点。例如,'build.js'将是'build.32048uueo02348324.js',其中hash表示构建的当前“版本”,并且当创建新构建时,旧文件将被销毁而不是新文件一个不同的散列。这样你就不必担心任何HTTP头,除非你想要更多的控制。 – Lansana
这可以帮助https://stackoverflow.com/questions/1011605/clear-the-cache-in-javascript – jakob
生成已经这样做,这里是我最新的版本的示例:'app.c6831a12f10f0ece2c67.js' – andrei