【解决彻底】vue前端发版后要刷新才能看到更新问题

前端在开发应用的时候,合理利用缓存可提高应用性能。但有些缓存会给我们带来困扰,比如前端每次发版,浏览器存在缓存要刷新才能看到更新,这种体验很不好。针对这个问题我总结了两种有效方案。

一、meta标签处理

vue-cli里的默认配置,css和js的名字都加了哈希值,所以新版本css、js和就旧版本的名字是不同的,不会有缓存问题。关键在于index.html文件它会被浏览器缓存。浏览器访问的还是旧的静态资源。解决办法如下,在meta标签禁止浏览器缓存 html

<meta http-equiv="cache-control" content="no-cache,no-store, must-revalidate" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

二、版本号 + 定时器

每次发版都应该有个版本号,很多开发者忽略了这个问题。这里我就用大白话说下我的思路。发版的时候我们把更新的版本号存放到静态文件中。然后定时用 ajax请求获取这个静态文件的版本号。最后跟浏览器内存中的版本号进行对比,如果不一致则说明有更新。js执行刷新页面。

// 定时获取版本号
setInterval(() => {
    checkUpdate()
}, 6000)

function checkUpdate() {
    axios
    .get(`/getVersion?timestamp=${Date.parse(new Date())}`)
    .then(function(response) {
        // 判断版本号是否与本地一致
        if (response.version != localStorage.getItem('version')) {
        localStorage.setItem('version', response.version)
        location.reload()
        } else {
        //版本号一致不做处理
        console('版本号一致不做处理')
        }
    })
    .catch(function(error) {
        console.log(error)
    })
}
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容