Hybrid H5發(fā)布緩存問題

Hybrid H5在部分android(例如oppo)手機上,會有發(fā)布新H5后,打開H5頁面有點擊報錯或白屏問題,這類問題通常是由于手機本地緩存導致,可以在設(shè)置中強制執(zhí)行清理數(shù)據(jù)或緩存,或者在H5中增加如下配置:

vue3+vite配置

  1. 在vite.config.js中配置注入代碼
plugins: [
  {
      name: 'inject-version',
      transformIndexHtml(html) {
        return html.replace('<head>', `<head>\n  <meta name="app-version" content="${APP_VERSION}">`);
      },
    }
]
  1. 在index.html head中配置
// 腳本必須在任何資源加載前運行!
<script>
      (function () {
        const CURRENT_VERSION = document.querySelector('meta[name="app-version"]')?.content || 'unknown';
        const LAST_VERSION = localStorage.getItem('appVersion');
        if (LAST_VERSION && LAST_VERSION !== CURRENT_VERSION) {
          // 版本變化:清理緩存 + 刷新
          localStorage.clear();
          localStorage.setItem('appVersion', CURRENT_VERSION);
          window.location.href = window.location.href.split('?')[0] + '?t=' + Date.now();
        } else {
          // 首次訪問或版本一致
          localStorage.setItem('appVersion', CURRENT_VERSION);
        }
      })();
    </script>

vue2+webpack配置

  1. 在vue.congig.js中配置注入代碼
// 讀取version 
const { version } = require('./package.json')
chainWebpack: config => {
config.plugin('html').tap(args => {
      // args[0]:傳給new HtmlWebpackPlugin(options)的options
      args[0].meta = {
        ...args[0].meta, // 保留原有 metas
        'app-version': {
          name: 'app-version',
          content: version
        }
      }
      return args
    })
}
  1. 在index.html中配置
// 腳本必須在任何資源加載前運行!
<script>
      (function () {
        const CURRENT_VERSION = document.querySelector('meta[name="app-version"]')?.content || 'unknown';
        const LAST_VERSION = localStorage.getItem('appVersion');
        if (LAST_VERSION && LAST_VERSION !== CURRENT_VERSION) {
          // 版本變化:清理緩存 + 刷新
          localStorage.clear();
          localStorage.setItem('appVersion', CURRENT_VERSION);
          window.location.href = window.location.href.split('?')[0] + '?t=' + Date.now();
        } else {
          // 首次訪問或版本一致
          localStorage.setItem('appVersion', CURRENT_VERSION);
        }
      })();
    </script>

注意

每次發(fā)布H5記得更新配置的版本號,如果麻煩,可以在版本號增加時間戳也行

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容