欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue項目打包后,由于html被緩存導致出現(xiàn)白屏的處理方案

 更新時間:2023年03月19日 15:11:39   作者:胖子liu  
這篇文章主要介紹了vue項目打包后,由于html被緩存導致出現(xiàn)白屏的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

背景

vue線上的項目修改打包,重新部署后,線上出現(xiàn)了白屏,無法顯示

原因

這是因為瀏覽器緩存了之前的html,用戶訪問的還是之前的html,但是由于我們重新打包更新了服務器的資源,那么之前的html上引用的資源已經不存在了,所以頁面就無法顯示出來了。

解決思路

1. 手動刷新。懂的都都懂,用戶自己看到屏幕白茫茫一片,肯定以為網絡不好,多刷新幾次就出來了。

2. 在html加上 no-cache 等等 meta標簽,然后服務器ngix也加傷 no-cache 等不緩存的代碼,網上搜一搜:vue打包緩存白屏,會有好多,這里就不多說了,主要是我加了這些東西后跟沒加的效果一樣,并不能解決,還有可能是項目是放在別人的cdn上,改不了服務器,可能也不會起作用。

3. 代碼刷新。通過測試我們可以看到,當出現(xiàn)白屏時,刷新可以使頁面恢復正常,那是刷新時繞過了緩存,有興趣的朋友可以去了解這方面的知識。所以,我們只需要在資源加載出錯的時候讓頁面重新刷新,那么問題就可以解決了。

代碼刷新處理方法

1. 監(jiān)聽資源加載。在頁面加載完成時,使用window自帶方法,監(jiān)聽資源加載失敗error時,查找失敗的資源是否是我們vue項目的資源,只要匹配一個即可通知我們調用刷新頁面的方法。

汗顏,我是想監(jiān)聽失敗的js、css,奈何一直無法監(jiān)聽到,所以放棄了,有成功的朋友可以交流交流。

2. 在項目main.js內定義一個全局變量

window.my_isLoad = 1

然后我們在index.html內寫上監(jiān)聽的方法,此處需注意,如果使用window.onload,那要確保你項目其他地方沒有使用這個方法,不然會失效,因為window.onload只能執(zhí)行一次,多個時只執(zhí)行最后一個。

或者引入jquery,使用jquery的ready方法,該方法可以多次調用,并且執(zhí)行的時間節(jié)點比onload靠前,節(jié)省時間

先在index.html引入jquery

$(document).ready(
? ? ? ? function(){
? ? ? ? ? if(!window.my_isLoad) {
? ? ? ? ? ? // 這里可供自己測試查看,上線時可去掉,或自己做替他交互也可以,比如在頁面上給什么提示信息、按鈕
? ? ? ? ? ? var paydiv = document.createElement('div')
? ? ? ? ? ? ? ? paydiv.innerHTML = '資源加載失敗,我要刷新了'
? ? ? ? ? ? ? ? document.body.appendChild(paydiv)
? ? ? ? ? ? //?
? ? ? ? ? ? setTimeout(()=>{
? ? ? ? ? ? ? document.body.removeChild(paydiv)
? ? ? ? ? ? ? window.location.reload(true)
? ? ? ? ? ? },10000)
? ? ? ? ? ? // 這個延遲時間可自己控制,頁面加載出錯多久后刷新頁面
? ? ? ? ? }
? ? ? ? }
? ? ? )

上面使用的是通過在main.js內新增變量去判斷,由于我司的頁面有很多嵌入app的混合項目,在某個ios內出現(xiàn)了刷新頁面時,緩存了之前window的變量,導致判斷不準確,所以又想了一個不使用window變量的方法。

思路就是在App.vue 內創(chuàng)建一個元素,然后同樣在index.html判斷頁面是否存在這個元素

在mounted生命周期里執(zhí)行這個方法,添加一個元素,我們在index.html內通過id判斷這個元素

this.$nextTick(()=>{
? ? ? (function(){
? ? ? ? var appDom = document.getElementById('app') ? ? //這里的app是我們vue項目的app
? ? ? ? var checkDom = document.createElement('span')
? ? ? ? checkDom.setAttribute('id', 'my-check-load-dom') ? //這里的id是我們需要判斷的
? ? ? ? checkDom.style.display = 'none'
? ? ? ? appDom.appendChild(checkDom)
? ? ? })()
? ? })
$(document).ready(
? ? ? ? function(){
? ? ? ? ? var myLoadDom = document.getElementById('my-check-load-dom')
? ? ? ? ? if(!myLoadDom) {
? ? ? ? ? ? var paydiv = document.createElement('div')
? ? ? ? ? ? ? ? paydiv.innerHTML = '資源加載失敗,我要刷新了'
? ? ? ? ? ? ? ? document.body.appendChild(paydiv)
? ? ? ? ? ? setTimeout(()=>{
? ? ? ? ? ? ? document.body.removeChild(paydiv)
? ? ? ? ? ? ? window.location.reload(true)
? ? ? ? ? ? },10000)
? ? ? ? ? }
? ? ? ? }
? ? ? )

至此,在資源加載時候,頁面可以自動刷新,從而答案重新獲取資源,解決白屏的問題。

若是嵌入app的混合項目,需要app的webview支持我們?yōu)g覽器的刷新方法,這點可以自己去測試,若不支持的話,可以去跟公司的app大佬溝通,有些webview默認不支持,需要他們寫方法支持。 

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue實現(xiàn)動態(tài)路由的方法及路由原理解析

    vue實現(xiàn)動態(tài)路由的方法及路由原理解析

    這篇文章主要介紹了路由原理及vue實現(xiàn)動態(tài)路由,Vue Router 提供了豐富的 API,可以輕松地實現(xiàn)路由功能,并支持路由參數(shù)、查詢參數(shù)、命名路由、嵌套路由等功能,可以滿足不同應用程序的需求,需要的朋友可以參考下
    2023-06-06
  • vue3實戰(zhàn)教程之axios的封裝和環(huán)境變量

    vue3實戰(zhàn)教程之axios的封裝和環(huán)境變量

    這篇文章主要給大家介紹了關于vue3實戰(zhàn)教程之axios的封裝和環(huán)境變量的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • Vue.js桌面端自定義滾動條組件之美化滾動條VScroll

    Vue.js桌面端自定義滾動條組件之美化滾動條VScroll

    這篇文章主要給大家介紹了關于Vue.js桌面端自定義滾動條組件之美化滾動條VScroll的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 淺談關于vue中scss公用的解決方案

    淺談關于vue中scss公用的解決方案

    這篇文章主要介紹了淺談關于vue中scss公用的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • vue實現(xiàn)導航欄下拉菜單

    vue實現(xiàn)導航欄下拉菜單

    這篇文章主要為大家詳細介紹了vue實現(xiàn)導航欄下拉菜單,帶展開收縮動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子

    在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子

    今天小編就為大家分享一篇在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue.js實現(xiàn)多條件篩選、搜索、排序及分頁的表格功能

    Vue.js實現(xiàn)多條件篩選、搜索、排序及分頁的表格功能

    這篇文章主要為大家詳細介紹了Vue.js實現(xiàn)多條件篩選、搜索、排序及分頁的表格功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue項目報錯Extra?semicolon?(semi)問題及解決

    vue項目報錯Extra?semicolon?(semi)問題及解決

    這篇文章主要介紹了vue項目報錯Extra?semicolon?(semi)問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 探秘Vue異步更新機制中nextTick的原理與實現(xiàn)

    探秘Vue異步更新機制中nextTick的原理與實現(xiàn)

    nextTick?是?Vue?提供的一個重要工具,它的作用主要體現(xiàn)在幫助我們更好地處理異步操作,下面就跟隨小編一起來探索一下nextTick的原理與實現(xiàn)吧
    2024-02-02
  • 基于vue組件實現(xiàn)猜數(shù)字游戲

    基于vue組件實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細介紹了基于vue組件實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論