最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3打包h5平板每次都要清緩存的問題及解決

 更新時間:2025年09月13日 09:30:42   作者:leijmdas  
這篇文章主要介紹了vue3打包h5平板每次都要清緩存的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Vue 項目打包部署后,瀏覽器或平板因緩存問題未能及時更新,確實很常見。下面我為你梳理原因和解決辦法。

瀏覽器緩存的原因

瀏覽器會緩存靜態(tài)資源(如 JS、CSS)。當(dāng)你部署新版本后,如果文件名未變,瀏覽器可能會直接使用緩存的舊文件,導(dǎo)致頁面無法更新。

解決方案

你可以通過以下方法解決緩存問題,這些方法可以單獨或組合使用:

方法類別具體措施效果與特點
HTML 頁面緩存控制在 index.html 中設(shè)置 Meta 標(biāo)簽告知瀏覽器不要緩存當(dāng)前頁面,簡單直接,但可能無法完全控制所有資源的緩存。
構(gòu)建輸出文件名哈?;?/td>配置 vue.config.js,輸出帶哈希的文件名最有效的方法之一。文件內(nèi)容變化則哈希值變,強制瀏覽器獲取新資源。
服務(wù)器端緩存控制配置服務(wù)器(如 Nginx)的緩存策略從服務(wù)器層面控制資源緩存行為,更為徹底和可靠。
客戶端存儲版本清理根據(jù)版本號清理 localStorage解決應(yīng)用數(shù)據(jù)緩存問題,需結(jié)合其他方法使用。

下面是這些方法的詳細說明:

詳細配置步驟

1. 修改 index.html 禁止頁面緩存

public/index.html 文件的 <head> 部分添加以下 meta 標(biāo)簽,指示瀏覽器不要緩存 HTML 頁面本身:

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="expires" content="0">

注意:此方法主要針對 HTML 頁面本身的緩存,對于頁面中引用的 JS、CSS 等靜態(tài)資源,瀏覽器的緩存行為還需通過其他方式控制。

2. 配置 vue.config.js 給文件名添加哈希或時間戳

在項目根目錄的 vue.config.js 文件中(若沒有請創(chuàng)建),通過以下配置為輸出的 JS 和 CSS 文件添加哈希值或時間戳,確保每次構(gòu)建生成的文件名不同。

使用時間戳示例

const timeStamp = new Date().getTime();

module.exports = {
  configureWebpack: {
    output: {
      filename: `js/[name].${timeStamp}.js`,
      chunkFilename: `js/[name].${timeStamp}.js`,
    },
  },
  css: {
    extract: {
      filename: `css/[name].${timeStamp}.css`,
      chunkFilename: `css/[name].${timeStamp}.css`,
    },
  }
};

使用 Webpack 內(nèi)置的 [contenthash](推薦)

Webpack 提供了 [contenthash] 占位符,它會根據(jù)文件內(nèi)容生成哈希值。只有文件內(nèi)容發(fā)生變化時,哈希值才會改變,這有助于利用瀏覽器緩存并保證更新。

module.exports = {
  configureWebpack: {
    output: {
      filename: 'js/[name].[contenthash].js',
      chunkFilename: 'js/[name].[contenthash].js',
    },
  },
  css: {
    extract: {
      filename: 'css/[name].[contenthash].css',
      chunkFilename: 'css/[name].[contenthash].css',
    },
  }
};

3. 服務(wù)器配置(以 Nginx 為例)

如果你使用 Nginx 作為服務(wù)器,可以為 HTML 文件和靜態(tài)資源配置不同的緩存策略。

例如,希望 HTML 文件不被緩存,而 JS、CSS、圖片等靜態(tài)資源(通常帶有哈希)可以長期緩存:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        root /yourdir/;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    # 對 HTML 文件設(shè)置不緩存
    if ($request_filename ~* .*\.(htm|html)$) {
        add_header Cache-Control "no-store, no-cache, must-revalidate";
    }

    # 對帶有哈希的 JS、CSS 文件設(shè)置長期緩存
    location ~* \.(js|css)$ {
        root /yourdir/;
        # 設(shè)置緩存時間為1年
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

注意if 指令在 Nginx 中的使用需謹(jǐn)慎,建議優(yōu)先使用 location 塊進行匹配。上述配置僅為示例,請根據(jù)你的實際 Nginx 配置環(huán)境和知識進行調(diào)整。

4. 客戶端存儲版本清理

若應(yīng)用使用了 localStoragesessionStorage,在應(yīng)用版本升級時可能需要清理。可以在 main.js 或應(yīng)用入口文件中加入版本檢查邏輯:

// 以 main.js 為例
const currentVersion = require('../package.json').version; // 或 process.env.VUE_APP_VERSION
const storedVersion = localStorage.getItem('appVersion');

if (currentVersion !== storedVersion) {
  localStorage.clear(); // 或選擇性清理
  sessionStorage.clear(); // 根據(jù)需要決定
  localStorage.setItem('appVersion', currentVersion);
  // 可以根據(jù)需要決定是否強制刷新頁面
  // window.location.reload(true);
}

此方法通常與其他方法結(jié)合使用。

補充建議

  • 確保配置生效:每次修改 vue.config.js 或服務(wù)器配置后,記得重新構(gòu)建項目重啟或重載服務(wù)器(如 nginx -s reload)。
  • 優(yōu)先推薦方案“配置 vue.config.js 使用 [contenthash]” + “服務(wù)器配置為 HTML 文件設(shè)置不緩存,為帶哈希的靜態(tài)資源設(shè)置長期緩存” 是多數(shù)項目的優(yōu)選方案。它既能保證更新,又能利用緩存優(yōu)化性能。
  • 測試驗證:部署后,打開平板的瀏覽器開發(fā)者工具(通常可通過遠程調(diào)試功能),在 Network 面板中勾選 Disable cache 并刷新頁面,觀察加載的資源文件是否帶有最新的哈?;驎r間戳,以確保新配置已生效。

注意事項

  • vue.config.js 的配置:修改 vue.config.js 后,需要重新運行 npm run buildyarn build 才能生效。
  • 服務(wù)器配置的生效:對 Nginx 等服務(wù)器配置的更改,通常需要重啟或重新加載配置(如執(zhí)行 nginx -s reload)才能生效。
  • 緩存的多層性:除了瀏覽器緩存,還需注意 CDN 緩存、網(wǎng)關(guān)緩存等。如果使用了 CDN,確保在部署新版本后刷新 CDN 緩存。

總結(jié)

希望這些方法能幫你解決問題。

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

相關(guān)文章

  • vue實現(xiàn)自定義el-table穿梭框功能

    vue實現(xiàn)自定義el-table穿梭框功能

    這篇文章主要介紹了vue實現(xiàn)自定義el-table穿梭框功能,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue實現(xiàn)購物車案例

    vue實現(xiàn)購物車案例

    這篇文章主要為大家詳細介紹了vue實現(xiàn)購物車案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Vue?事件處理函數(shù)的綁定示例詳解

    Vue?事件處理函數(shù)的綁定示例詳解

    這篇文章主要為大家介紹了Vue?事件處理函數(shù)的綁定示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Vue插槽原理與用法詳解

    Vue插槽原理與用法詳解

    這篇文章主要介紹了Vue插槽原理與用法,結(jié)合實例形式詳細分析了vue.js插槽內(nèi)容、具名插槽、作用域插槽等相關(guān)原理與使用方法,需要的朋友可以參考下
    2019-03-03
  • uniapp中app與webview的通訊代碼示例

    uniapp中app與webview的通訊代碼示例

    這篇文章主要給大家介紹了關(guān)于uniapp中app與webview通訊的相關(guān)資料,這里的通信主要是打包APP端和web-view內(nèi)嵌網(wǎng)頁的雙向通信,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • 基于Vue實現(xiàn)平滑過渡的拖拽排序功能

    基于Vue實現(xiàn)平滑過渡的拖拽排序功能

    這篇文章主要介紹了vue實現(xiàn)平滑過渡的拖拽排序功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 關(guān)于Less在Vue中的使用方法介紹

    關(guān)于Less在Vue中的使用方法介紹

    最近發(fā)現(xiàn)好多小伙伴在面試的過程中會問到vue如何使用less和scss,所以下面這篇文章主要給大家介紹了關(guān)于Less在Vue中的使用方法,需要的朋友可以參考下
    2023-10-10
  • 解決vue單頁面應(yīng)用中動態(tài)修改title問題

    解決vue單頁面應(yīng)用中動態(tài)修改title問題

    這篇文章主要介紹了解決vue單頁面應(yīng)用中動態(tài)修改title問題,本文通過示例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • vue-element內(nèi)table插入超鏈接a標(biāo)簽的使用

    vue-element內(nèi)table插入超鏈接a標(biāo)簽的使用

    在Vue Element的table組件中插入超鏈接,可以使用<el-link>標(biāo)簽替代傳統(tǒng)的<a>標(biāo)簽,實現(xiàn)更加整潔的UI設(shè)計,具體操作是替換原有的<span>標(biāo)簽,直接使用<el-link>進行超鏈接的插入,使得鏈接樣式與Element UI保持一致
    2024-09-09
  • Vue項目字體文件打包后fonts文件夾消失的原因分析與解決方案

    Vue項目字體文件打包后fonts文件夾消失的原因分析與解決方案

    在 Vue 項目中,將字體文件放在 src/assets/fonts 目錄下,打包后在瀏覽器中訪問發(fā)現(xiàn)路徑里不見了 fonts文件夾,這通常不是文件丟失,而是 Vue 的構(gòu)建工具對靜態(tài)資源進行了自動化處理,本文給大家介紹了Vue項目字體文件打包后fonts文件夾消失的原因分析與解決方案
    2026-06-06

最新評論

宁晋县| 麻江县| 甘泉县| 珠海市| 纳雍县| 噶尔县| 龙江县| 翁源县| 沅江市| 乌海市| 连南| 石景山区| 堆龙德庆县| 云和县| 应城市| 会昌县| 伊春市| 安徽省| 新郑市| 新绛县| 乐山市| 宣汉县| 河池市| 永善县| 大埔区| 新田县| 益阳市| 青铜峡市| 吉林省| 东安县| 沙田区| 青龙| 固阳县| 长兴县| 辛集市| 湟中县| 安多县| 察雅县| 张家界市| 巴南区| 天气|