解决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)
    })
}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值