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

React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn)代碼

 更新時(shí)間:2023年11月07日 09:09:27   作者:顏正義  
Workbox是Google Chrome團(tuán)隊(duì)推出的一套 PWA 的解決方案,這套解決方案當(dāng)中包含了核心庫(kù)和構(gòu)建工具,因此我們可以利用Workbox實(shí)現(xiàn)Service Worker的快速開發(fā),本文小編給大家介紹了React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn),需要的朋友可以參考下

Workbox 是什么

Workbox 是 Google Chrome 團(tuán)隊(duì)推出的一套 PWA 的解決方案,這套解決方案當(dāng)中包含了核心庫(kù)和構(gòu)建工具,因此我們可以利用 Workbox 實(shí)現(xiàn) Service Worker 的快速開發(fā)。以下內(nèi)容基于webpack進(jìn)行講解以及安裝

Workbox 內(nèi)置于 Create React App (CRA) 中,其默認(rèn)配置會(huì)在每次構(gòu)建時(shí)預(yù)緩存應(yīng)用中的所有靜態(tài)資源。

Workbox 如何使用

  • 首先安裝 workbox-webpack-plugin
npm install workbox-webpack-plugin
  • 在webpack config 中引入
const { GenerateSW, InjectManifest } = require('workbox-webpack-plugin')
  • 在 src/index.js 文件中啟用它即可在每個(gè) build 中注冊(cè)一個(gè)新的 Service Worker
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(<App />, document.getElementById('root'));

serviceWorker.unregister();
serviceWorker.register();

GenerateSW 和InjectManifest 的區(qū)別

generateSWinjectManifest 是 Workbox 構(gòu)建工具中兩種不同的策略,用于生成和配置 Service Worker 腳本。它們具有不同的特點(diǎn)和用途:

  • generateSW

    • generateSW 是 Workbox 構(gòu)建工具的一種策略,它用于生成 Service Worker 文件,包括緩存策略和預(yù)緩存的資源列表。
    • 使用 generateSW 時(shí),您只需提供一個(gè)配置文件,通常稱為 workbox-config.js,以指定預(yù)緩存的資源列表、緩存策略和其他相關(guān)選項(xiàng)。
    • generateSW 會(huì)自動(dòng)創(chuàng)建一個(gè) Service Worker 文件,無(wú)需您手動(dòng)編寫它。這個(gè)生成的 Service Worker 文件包含了 Workbox 提供的緩存策略和路由配置。
    • 這種策略適用于大多數(shù)情況下,特別是對(duì)于初學(xué)者或不需要自定義 Service Worker 行為的情況。
  • injectManifest

    • injectManifest 是 Workbox 構(gòu)建工具的另一種策略,它允許您手動(dòng)編寫自定義的 Service Worker 文件,并將 Workbox 緩存策略注入到其中。
    • 使用 injectManifest 時(shí),您需要自己編寫 Service Worker 文件,并在其中指定 Workbox 的緩存策略和路由配置。
    • 這個(gè)策略更適用于需要高度自定義 Service Worker 行為的情況,或者已經(jīng)有現(xiàn)有 Service Worker 文件,需要將 Workbox 緩存策略集成進(jìn)去。
    • 您可以將 Workbox 生成的緩存策略注入到您已經(jīng)存在的 Service Worker 文件中,以實(shí)現(xiàn)更靈活的控制。

總的來(lái)說(shuō),generateSW 是一種簡(jiǎn)單且自動(dòng)化的方式,適合大多數(shù)情況,而 injectManifest 則更適合需要更多自定義控制的情況。您可以根據(jù)項(xiàng)目需求和自己的技術(shù)水平選擇適合您的策略。無(wú)論您選擇哪種策略,都能夠讓您利用 Workbox 提供的緩存和離線支持來(lái)提高 Web 應(yīng)用程序的性能和可靠性。

Workbox 配置, 還算完整的配置

new GenerateSW({
      cacheId: '', // 設(shè)置前綴
      swDest: 'serviceWorker.js',
      importScripts:[], // 如果需要在項(xiàng)目之外額外引入并預(yù)加載一些代碼
      disableDevLogs: true,
      clientsClaim: true,  // 是否實(shí)現(xiàn)即時(shí)更新
      skipWaiting: true,   // 是否跳過(guò)等待階段
      maximumFileSizeToCacheInBytes: 100 * 1024 * 1024,  // 預(yù)緩存的最大文件的大小
      chunks:[],  // 手動(dòng)加載需要引入的東西 完整路徑
      excludeChunks: [],  // 手動(dòng)過(guò)濾不需要引入的東西, 路徑
      include: [/\.html$/, /\.js$/, /\.css$/, /\.(?:png|gif|jpg|jpeg|svg)$/], //匹配文件
      exclude: [/^main.*/],  //忽略的文件
      runtimeCaching: [
          {
              urlPattern: /\.(?:png|gif|jpg|jpeg|svg)[\?]?/,   // 正則進(jìn)行匹配文件格式
              handler: 'CacheFirst',   // 緩存策略
              options: {
                cacheName: `image-cache`,   // 緩存名稱
                cacheableResponse: {
                  statuses: [0, 200]     
                },
                expiration: {
                  maxEntries: 60, // 最大的緩存數(shù),超過(guò)之后則走 LRU 策略清除最老最少使用緩存
                  maxAgeSeconds: 30 * 24 * 60 * 60 // 最長(zhǎng)緩存時(shí)間為 30 天
                }
              }
        },
      ], // 設(shè)置緩存策略
  })

Workbox路由以及緩存策略

Workbox中的路由是指可以使用的一種機(jī)制,用于定義請(qǐng)求和響應(yīng)的處理方式。Workbox的路由可以用于緩存策略、路由處理、動(dòng)態(tài)緩存、網(wǎng)絡(luò)請(qǐng)求攔截等。它允許您為不同的URL模式和HTTP方法設(shè)置不同的處理方式。 下面是一些關(guān)于如何使用Workbox路由的示例:

  • 基本路由:
workbox.routing.registerRoute(
  '/example/path',
  new workbox.strategies.CacheFirst()
);

這個(gè)示例將'/example/path'的請(qǐng)求路由到Cache First策略,意味著首先嘗試從緩存中獲取響應(yīng),如果緩存中沒(méi)有,則從網(wǎng)絡(luò)獲取。

  • 使用正則表達(dá)式進(jìn)行路由匹配:
workbox.routing.registerRoute(
  new RegExp('^https://api.example.com/'),
  new workbox.strategies.NetworkFirst()
);

這個(gè)示例使用正則表達(dá)式匹配所有以'api.example.com/'開頭的請(qǐng)求,并使用N… First策略。 3.自定義路由匹配條件

workbox.routing.registerRoute(
  ({url, event}) => url.pathname.startsWith('/images/'),
  new workbox.strategies.StaleWhileRevalidate()
);

這個(gè)示例使用自定義匹配條件,僅當(dāng)URL的路徑以'/images/'開頭時(shí),使用Stale While Revalidate策略。 4.路由參數(shù):

workbox.routing.registerRoute(
  ({request, url}) => {
    return request.mode === 'navigate' && url.pathname.startsWith('/article/');
  },
  new workbox.strategies.NetworkFirst()
);

這個(gè)示例使用自定義條件,僅當(dāng)請(qǐng)求模式是導(dǎo)航(navigate)且路徑以'/article/'開頭時(shí),使用Network First策略。

Workbox 預(yù)緩存

Workbox的預(yù)緩存是指在應(yīng)用程序安裝階段將特定資源緩存到Service Worker的緩存中,以確保這些資源在離線狀態(tài)下可用。這通常用于緩存應(yīng)用程序的核心資源,以提高應(yīng)用程序的性能和可靠性。

Workbox官網(wǎng)地址

PS: 總的來(lái)說(shuō),Workbox 是一個(gè)功能豐富的工具集,用于增強(qiáng) Web 應(yīng)用程序的性能、可靠性和離線體驗(yàn)。它為開發(fā)者提供了強(qiáng)大的工具和靈活的配置選項(xiàng),以幫助他們輕松地實(shí)現(xiàn)離線支持和高級(jí)緩存控制。這使得 Web 應(yīng)用程序能夠更好地應(yīng)對(duì)不穩(wěn)定的網(wǎng)絡(luò)連接和提供更快的加載速度。

以上就是React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn)代碼的詳細(xì)內(nèi)容,更多關(guān)于React Workbox預(yù)緩存的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React + Recharts 圖表點(diǎn)擊時(shí)出現(xiàn)黑色邊框的問(wèn)題及解決方法

    React + Recharts 圖表點(diǎn)擊時(shí)出現(xiàn)黑色邊框的問(wèn)題及解決方法

    本文給大家介紹React + Recharts 圖表點(diǎn)擊時(shí)出現(xiàn)黑色邊框的問(wèn)題及解決方法,這是由于瀏覽器的默認(rèn)focusoutline樣式,嘗試了多種解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • React父子組件傳值(組件通信)的實(shí)現(xiàn)方法

    React父子組件傳值(組件通信)的實(shí)現(xiàn)方法

    本文主要介紹了React父子組件傳值(組件通信)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • react實(shí)現(xiàn)移動(dòng)端二級(jí)路由嵌套詳解

    react實(shí)現(xiàn)移動(dòng)端二級(jí)路由嵌套詳解

    這篇文章主要介紹了react移動(dòng)端二級(jí)路由嵌套的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • React useState超詳細(xì)講解用法

    React useState超詳細(xì)講解用法

    我正在處理的組件是表單的時(shí)間輸入。表單相對(duì)復(fù)雜,并且是動(dòng)態(tài)生成的,根據(jù)嵌套在其他數(shù)據(jù)中的數(shù)據(jù)顯示不同的字段。我正在用useReducer管理表單的狀態(tài),到目前為止效果很好
    2022-11-11
  • React項(xiàng)目開發(fā)中函數(shù)組件與函數(shù)式編程關(guān)系

    React項(xiàng)目開發(fā)中函數(shù)組件與函數(shù)式編程關(guān)系

    函數(shù)組件和函數(shù)式編程究竟是什么關(guān)系呢?本文會(huì)圍繞這個(gè)話題展開講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • React實(shí)現(xiàn)生成和導(dǎo)出Word文檔的方法詳解

    React實(shí)現(xiàn)生成和導(dǎo)出Word文檔的方法詳解

    React是一個(gè)流行的JavaScript庫(kù),用于構(gòu)建現(xiàn)代前端應(yīng)用程序,本文將深入探討如何在React中生成和導(dǎo)出Word文檔,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-09-09
  • react結(jié)合typescript?封裝組件實(shí)例詳解

    react結(jié)合typescript?封裝組件實(shí)例詳解

    這篇文章主要為大家介紹了react結(jié)合typescript?封裝組件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • React18新增特性released的使用

    React18新增特性released的使用

    本文主要介紹了React18新增特性released的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • React State狀態(tài)與生命周期的實(shí)現(xiàn)方法

    React State狀態(tài)與生命周期的實(shí)現(xiàn)方法

    這篇文章主要介紹了React State狀態(tài)與生命周期的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • react中通過(guò)props實(shí)現(xiàn)父子組件間通信的使用示例

    react中通過(guò)props實(shí)現(xiàn)父子組件間通信的使用示例

    在React中,父組件可以通過(guò)props屬性向子組件傳遞數(shù)據(jù),子組件可以通過(guò)props屬性接收父組件傳遞過(guò)來(lái)的數(shù)據(jù),本文就來(lái)介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2023-10-10

最新評(píng)論

齐齐哈尔市| 分宜县| 建水县| 龙里县| 清远市| 沙雅县| 北辰区| 永平县| 兴宁市| 衡阳市| 清远市| 莱阳市| 莱阳市| 静安区| 韩城市| 金坛市| 临夏市| 武隆县| 右玉县| 通城县| 应城市| 泰安市| 阿拉善左旗| 庄河市| 乐清市| 衡阳县| 花莲市| 璧山县| 蕉岭县| 雷波县| 宣恩县| 台前县| 灌阳县| 南华县| 兴山县| 宝清县| 高青县| 晋中市| 调兵山市| 右玉县| 大城县|