Vue項目發(fā)布后瀏覽器緩存問題解決方案
1. 現(xiàn)象描述
每次Jenkins自動化發(fā)布Vue項目后,用戶需要手動全部清理歷史緩存數(shù)據(jù)才可以使用系統(tǒng),用戶體驗非常不好
2. 解決方案
2.1 配置public/index.html
配置index.html, 在首頁啟動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按時間戳打包
vue 默認(rèn)配置,打包后 css 和 js 的名字后面都加了哈希值,不會有緩存問題,當(dāng)然我們也可以自己重新定義根據(jù)時間戳
const version = new Date().getTime();
module.exports = {
css: {
// 是否使用css分離插件 ExtractTextPlugin
extract: {
// 修改打包后css文件名 // css打包文件,添加時間戳
filename: `assert/css/[name].${version}.css`,
chunkFilename: `assert/css/[name].${version}.css`,
}
},
configureWebpack: {
output: isProduction ? { // 輸出 添加時間戳到打包編譯后的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自動化發(fā)布Vue項目,我們同樣在default.conf中配置。我們禁止對html頁面緩存,對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ā)布的,可能存在多個Nginx,只需配置項目代碼中使用的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項目發(fā)布后瀏覽器緩存問題解決方案的文章就介紹到這了,更多相關(guān)Vue發(fā)布瀏覽器緩存問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3 添加編輯頁使用 cron 表達(dá)式生成方法小結(jié)
這篇文章主要介紹了vue3 添加編輯頁使用 cron 表達(dá)式生成方法小結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-12-12
Vue 父子組件的數(shù)據(jù)傳遞、修改和更新方法
下面小編就為大家分享一篇Vue 父子組件的數(shù)據(jù)傳遞、修改和更新方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
仿照Element-ui實(shí)現(xiàn)一個簡易的$message方法
這篇文章主要介紹了仿照Element-ui實(shí)現(xiàn)一個簡易的$message方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
基于vue+echarts實(shí)現(xiàn)柱狀圖漸變色效果(每個柱子顏色不同)
前段時間的vue項目中用到了echarts柱狀圖,由于UI設(shè)計稿中要求使用漸變色,并且每個柱子的顏色不同,于是做了一番研究,現(xiàn)將我的實(shí)現(xiàn)方案分享如下2024-05-05
Vue項目markdown內(nèi)容預(yù)覽顯示優(yōu)化方式
在Vue項目中使用markdown-it組件預(yù)覽Markdown內(nèi)容時,通過安裝pnpm和markdown-it-github-markdown-css依賴,并重寫markdown部分樣式,實(shí)現(xiàn)了Markdown內(nèi)容的美化,在MarkdownPreview.vue組件中,通過變量renderedMarkdown接收并渲染Markdown內(nèi)容2025-10-10
vue頁面離開后執(zhí)行函數(shù)的實(shí)例
下面小編就為大家分享一篇vue頁面離開后執(zhí)行函數(shù)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
vue?codemirror實(shí)現(xiàn)在線代碼編譯器效果
這篇文章主要介紹了vue-codemirror實(shí)現(xiàn)在線代碼編譯器?,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
Vue3父子組件傳參有關(guān)sync修飾符的用法詳解
這篇文章主要給大家介紹關(guān)于前端Vue3父子組件傳參有關(guān)sync修飾符的用法詳細(xì)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09

