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-Table上綁定Input通過render實現(xiàn)雙向綁定數(shù)據(jù)的示例
今天小編就為大家分享一篇VUE-Table上綁定Input通過render實現(xiàn)雙向綁定數(shù)據(jù)的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
AntV F2和vue-cli構(gòu)建移動端可視化視圖過程詳解
這篇文章主要介紹了AntV F2和vue-cli構(gòu)建移動端可視化視圖過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10
Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié)
這篇文章主要介紹了Vue中的路由跳轉(zhuǎn)及傳參的多種方法小結(jié),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
Vue設置select下拉框的默認選項詳解(select空白bug解決)
最近開始學習vue,在學習的過程中遇到的問題將記錄在這里,下面這篇文章主要給大家介紹了關(guān)于Vue設置select下拉框的默認選項(select空白bug解決)的相關(guān)資料,需要的朋友可以參考下2022-12-12

