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

React中使用Workbox進行預緩存的實現(xiàn)代碼

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

Workbox 是什么

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

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

Workbox 如何使用

  • 首先安裝 workbox-webpack-plugin
npm install workbox-webpack-plugin
  • 在webpack config 中引入
const { GenerateSW, InjectManifest } = require('workbox-webpack-plugin')
  • 在 src/index.js 文件中啟用它即可在每個 build 中注冊一個新的 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 腳本。它們具有不同的特點和用途:

  • generateSW

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

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

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

Workbox 配置, 還算完整的配置

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

Workbox路由以及緩存策略

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

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

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

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

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

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

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

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

這個示例使用自定義條件,僅當請求模式是導航(navigate)且路徑以'/article/'開頭時,使用Network First策略。

Workbox 預緩存

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

Workbox官網(wǎng)地址

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

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

相關文章

  • React BootStrap用戶體驗框架快速上手

    React BootStrap用戶體驗框架快速上手

    這篇文章主要介紹了React BootStrap用戶體驗框架快速上手的相關知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-03-03
  • React組件、狀態(tài)管理、代碼優(yōu)化的技巧

    React組件、狀態(tài)管理、代碼優(yōu)化的技巧

    文章總結(jié)了React組件設計、狀態(tài)管理、代碼組織和優(yōu)化的技巧,它涵蓋了使用Fragment、props解構(gòu)、defaultProps、key和ref的使用、渲染性能優(yōu)化等方面
    2024-11-11
  • React事件處理的機制及原理

    React事件處理的機制及原理

    這篇文章主要介紹了React事件處理的機制及原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 詳解使用WebPack搭建React開發(fā)環(huán)境

    詳解使用WebPack搭建React開發(fā)環(huán)境

    這篇文章主要介紹了詳解使用WebPack搭建React開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • React組件的生命周期詳解

    React組件的生命周期詳解

    React是用于構(gòu)建用戶界面的JavaScript庫。本文詳細講解了React的生命周期,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • react使用antd-design中select不能及時刷新問題及解決

    react使用antd-design中select不能及時刷新問題及解決

    這篇文章主要介紹了react使用antd-design中select不能及時刷新問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React?Context詳解使用方法

    React?Context詳解使用方法

    Context提供了一個無需為每層組件手動添加props,就能在組件樹間進行數(shù)據(jù)傳遞的方法。在一個典型的?React?應用中,數(shù)據(jù)是通過props屬性自上而下(由父及子)進行傳遞的,但這種做法對于某些類型的屬性而言是極其繁瑣的
    2022-12-12
  • 理解react中受控組件和非受控組件及應用場景

    理解react中受控組件和非受控組件及應用場景

    當涉及到React框架時,了解受控組件和非受控組件是非常重要的概念,本文主要介紹了理解react中受控組件和非受控組件及應用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 簡單談談React中的路由系統(tǒng)

    簡單談談React中的路由系統(tǒng)

    下面小編就為大家?guī)硪黄唵握務凴eact中的路由系統(tǒng)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 深入研究React中setState源碼

    深入研究React中setState源碼

    這篇文章主要介紹了深入研究React中setState源碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論