我有一个VueJS应用。每当我运行npm run build
它时,它都会创建一组新dist/*
文件,但是,当我将它们加载到服务器上(删除旧版本后),并在浏览器中打开页面时,它将加载旧版本(我认为是从缓存中加载)。当我刷新页面时,它加载新代码没问题。
这是我的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>
有没有一种方法可以强制它每次都加载新代码,或者(理想情况下)检查旧文件是否已从服务器中删除,然后刷新浏览器?
基于对缓存头的综合回答,如果可以控制,最好的办法是在服务器端解决此问题,因为
<meta>
标记中的任何内容都将被服务器设置的头所覆盖。对问题的评论表明您正在使用Nginx来提供此应用程序。使用上面的链接答案,我可以在我的nginx配置中为以这种方式结束的任何文件请求设置
Cache-Control
,Expires
和Pragma
标头.html
:这成功地迫使浏览器
index.html
在每次重新加载页面时请求最新的消息,但是除非最新的html响应中没有新的引用,否则仍然使用缓存的资产(js / css / fonts / images)。