Vue項目每次發(fā)版后要清理瀏覽器緩存問題解決辦法
打包的時候給每個打包文件后面加一個時間戳,通過 vue.config.js 配置
const timeStamp = new Date().getTime()
module.exports = {
// 打包的時候不使用hash值.因為我們有時間戳來確定項目的唯一性了.
filenameHashing: false,
configureWebpack: {
// 輸出重構(gòu) 打包編譯后的js文件名稱,添加時間戳
output: {
filename: `js/[name].${timeStamp}.js`,
chunkFilename: `js/chunk.[id].${timeStamp}.js`,
},
},
css: {
// 打包后css文件名稱添加時間戳
extract: {
filename: `css/[name].${timeStamp}.css`,
chunkFilename: `css/chunk.[id].${timeStamp}.css`,
},
},
}這樣可以解決問題,每次打包發(fā)布之后,項目不需要強制清理緩存就可以試試更新內(nèi)容了。但是這時候又有一個新問題產(chǎn)生。 就是這樣打包完發(fā)布之后,因為每次的文件名不一樣,項目中偶爾會報錯 ChunkLoadError: Loading chunk failed。原因就是瀏覽器取的是緩存中的文件名稱,新打包之后,文件名稱改變,導致瀏覽器找不到文件了 404。需要刷新頁面,重新加載文件。
先說一下單獨解決這個問題的方法
// 在main.js中
/* 路由異常錯誤處理,嘗試解析一個異步組件時發(fā)生錯誤,重新渲染目標頁面 */
router.onError((error) => {
const pattern = /Loading chunk (\d)+ failed/g
const isChunkLoadFailed = error.message.match(pattern)
const targetPath = router.history.pending.fullPath
if (isChunkLoadFailed) {
// 用路由的replace方法,
// 并沒有相當于F5刷新頁面,
// 失敗的js文件并沒有從新請求,
// 會導致一直嘗試replace頁面導致死循環(huán),
// 而用 location.reload 方法,相當于觸發(fā)F5刷新頁面,
// 雖然用戶體驗上來說會有刷新加載察覺,但不會導致頁面卡死及死循環(huán),
// 從而曲線救國解決該問題
window.location.reload()
// router.replace(targetPath);
} else {
console.log('no')
}
})當捕獲到 Loading chunk {n} failed 的錯誤時我們重新渲染目標頁面,這種實現(xiàn)明顯更簡單和友好。
結(jié)合我們上面的問題,想到了一個新的解決方式,在打包的時候,文件名稱不變,使用版本號。這樣也可以實現(xiàn)每次打包發(fā)布后不需要強制清理緩存,又不會出現(xiàn)找不到文件的情況
在 vue.config.js 中,將 name.timeStamp.js 改成 name.js?v=timeStamp
const timeStamp = new Date().getTime()
module.exports = {
configureWebpack: {
output: {
filename: `js/[name].js?v=${timeStamp}`,
chunkFilename: `js/chunk.[id].js?v=${timeStamp}`,
},
},
css: {
extract: {
filename: `css/[name].css?v=${timeStamp}`,
chunkFilename: `css/chunk.[id].css?v=${timeStamp}`,
},
},總結(jié)
到此這篇關(guān)于Vue項目每次發(fā)版后要清理瀏覽器緩存問題解決的文章就介紹到這了,更多相關(guān)Vue發(fā)版后要清理瀏覽器緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue將后臺數(shù)據(jù)時間戳轉(zhuǎn)換成日期格式
這篇文章主要為大家詳細介紹了vue將后臺數(shù)據(jù)時間戳轉(zhuǎn)換成日期格式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
vue3+vite兼容低版本的白屏問題詳解(安卓7/ios11)
這篇文章主要給大家介紹了關(guān)于vue3+vite兼容低版本的白屏問題的相關(guān)資料,還給大家介紹了vue打包項目以后白屏和圖片加載不出來問題的解決方法,需要的朋友可以參考下2022-12-12
vue3中使用highlight.js實現(xiàn)代碼高亮顯示的代碼示例
代碼高亮是在網(wǎng)頁開發(fā)中常見的需求之一,它可以使代碼在頁面上以不同的顏色或樣式進行突出顯示提高可讀性,這篇文章主要介紹了vue3中使用highlight.js實現(xiàn)代碼高亮顯示的相關(guān)資料,需要的朋友可以參考下2025-04-04
vue 使用html2canvas將DOM轉(zhuǎn)化為圖片的方法
這篇文章主要介紹了vue 使用html2canvas將DOM轉(zhuǎn)化為圖片的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09

