Vue項(xiàng)目發(fā)布后瀏覽器緩存問題解決方案
1. 現(xiàn)象描述
每次Jenkins自動(dòng)化發(fā)布Vue項(xiàng)目后,用戶需要手動(dòng)全部清理歷史緩存數(shù)據(jù)才可以使用系統(tǒng),用戶體驗(yàn)非常不好
2. 解決方案
2.1 配置public/index.html
配置index.html, 在首頁啟動(dòng)no-store禁止緩存
<meta http-equiv="pragram" content="no-cache"> <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="expires" content="0">
2.2 配置vue.config.js按時(shí)間戳打包
vue 默認(rèn)配置,打包后 css 和 js 的名字后面都加了哈希值,不會(huì)有緩存問題,當(dāng)然我們也可以自己重新定義根據(jù)時(shí)間戳
const version = new Date().getTime(); module.exports = { css: { // 是否使用css分離插件 ExtractTextPlugin extract: { // 修改打包后css文件名 // css打包文件,添加時(shí)間戳 filename: `assert/css/[name].${version}.css`, chunkFilename: `assert/css/[name].${version}.css`, } }, configureWebpack: { output: isProduction ? { // 輸出 添加時(shí)間戳到打包編譯后的js文件名稱 filename: `assert/js/js[name].${version}.js`, chunkFilename: `assert/js/js[name].${version}.js`, } : {}, } }
2.3 配置nginx
但是 index.html 在服務(wù)器端可能是有緩存的,需要在服務(wù)器配置不讓緩存 index.html。之前我們有寫過文章Jenkins自動(dòng)化發(fā)布Vue項(xiàng)目,我們同樣在default.conf中配置。我們禁止對(duì)html頁面緩存,對(duì)js等緩存,這樣在首頁始終可以獲取最新的html頁面,進(jìn)入后自然可以使用最新的js打包文件,從而解決緩存問題
location / { root /usr/share/nginx/html; index index.html index.htm; if ($request_filename ~* .*\.(js|css|woff|png|jpg|jpeg)$) { expires 100d; } if ($request_filename ~* .*\.(?:htm|html)$) { add_header Cache-Control "no-store"; } }
如果是通過K8S發(fā)布的,可能存在多個(gè)Nginx,只需配置項(xiàng)目代碼中使用的nginx即可
附:清除瀏覽器 localStorage 緩存
1、更新package.json中的 version 值,每次打包往上遞增
2、main.js中,根據(jù) version 判斷是否進(jìn)行緩存清理
const VUE_APP_VERSION = require('../package.json').version const vers = window.localStorage.getItem('appVersion') if(VUE_APP_VERSION != vers){ localStorage.clear() window.localStorage.setItem('appVersion', VUE_APP_VERSION) location.reload() }
OK,解決
總結(jié)
到此這篇關(guān)于Vue項(xiàng)目發(fā)布后瀏覽器緩存問題解決方案的文章就介紹到這了,更多相關(guān)Vue發(fā)布瀏覽器緩存問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端項(xiàng)目中的Vue、React錯(cuò)誤監(jiān)聽
這篇文章主要介紹了前端項(xiàng)目中的Vue、React錯(cuò)誤監(jiān)聽,文章圍繞主題的相關(guān)資料展開詳細(xì)內(nèi)容介紹需要的小伙伴可以參考一下2022-04-04element?ui?From表單校驗(yàn)不生效問題解決
表單校驗(yàn)是注冊(cè)環(huán)節(jié)中必不可少的操作,表單校驗(yàn)可以提醒用戶填寫數(shù)據(jù)規(guī)則以確保用戶提交數(shù)據(jù)的有效性,本文主要介紹了element?ui?From表單校驗(yàn)不生效問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Vue簡(jiǎn)單封裝axios之解決post請(qǐng)求后端接收不到參數(shù)問題
這篇文章主要介紹了Vue簡(jiǎn)單封裝axios之解決post請(qǐng)求后端接收不到參數(shù)問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02require.js 加載 vue組件 r.js 合并壓縮的實(shí)例
這篇文章主要介紹了require.js 加載 vue組件 r.js 合并壓縮的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10ant design的table組件實(shí)現(xiàn)全選功能以及自定義分頁
這篇文章主要介紹了ant design的table組件實(shí)現(xiàn)全選功能以及自定義分頁,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11