「透過導覽預先載入加快服務工作站速度」一文清楚說明導覽預先載入的概念,以及對服務工作站未明確處理導覽要求的網頁應用程式帶來的好處。
這個模組有什麼用途?
workbox-navigation-preload
會在執行階段處理檢查作業,查看目前的瀏覽器是否支援導覽預先載入功能,如果支援,就會自動建立 activate
事件處理常式來啟用該功能。
workbox-core
中的共用程式碼,可處理所有 Workbox 中的網路要求
也會更新,自動利用預先載入的回應 (如果有的話)。也就是說,任何內建策略在啟用後,都能自動利用導覽預先載入功能。
誰應啟用瀏覽預先載入功能?
已開始處理瀏覽動作的開發人員,已回應預先快取的 HTML (可能是 設有 App Shell 備用機制時),則不需要啟用導覽預先載入功能!這項功能 ,針對無法預先載入 HTML,但仍想要開發人員解決問題的開發人員,可減少瀏覽的延遲時間 ,使用 Workbox 處理網站上其他資產的快取。
舉例來說,如果您採用 App Shell 模式,且已設定導覽路徑以使用預先快取的 HTML,啟用導覽預先載入功能就會浪費資源。網路 與預先載入要求相關的回應一律不會使用,因為預載 沒有條件地使用 HTML。
基本用法
import * as navigationPreload from 'workbox-navigation-preload';
import {NetworkFirst} from 'workbox-strategies';
import {registerRoute, NavigationRoute} from 'workbox-routing';
// Enable navigation preload.
navigationPreload.enable();
// Swap in NetworkOnly, CacheFirst, or StaleWhileRevalidate as needed.
const strategy = new NetworkFirst({
cacheName: 'cached-navigations',
plugins: [
// Any plugins, like `ExpirationPlugin`, etc.
],
});
const navigationRoute = new NavigationRoute(strategy, {
// Optionally, provide a allow/denylist of RegExps to determine
// which paths will match this route.
// allowlist: [],
// denylist: [],
});
registerRoute(navigationRoute);
瀏覽器支援故事為何?
目前 Google Chrome 是唯一支援瀏覽預先載入功能的瀏覽器。
enable()
會在執行階段檢查瀏覽器支援情形,並只在目前瀏覽器支援時嘗試啟用導覽預先載入功能。因此,在服務 worker 中無條件呼叫 enable()
是安全的。
要注意的是,這些瀏覽器無法享有降低瀏覽延遲的效益。 建議您仔細評估運送服務對成效的影響 不處理導覽要求,也不會使用導覽預先載入的 worker。
方法
disable()
workbox-navigation-preload.disable()
如果瀏覽器支援 Navigation Preload,則會停用此功能。
enable()
workbox-navigation-preload.enable(
headerValue?: string,
)
如果瀏覽器支援「導覽預先載入」,就會啟用這項功能。
參數
-
headerValue
string optional
isSupported()
workbox-navigation-preload.isSupported()
傳回
-
布林值
目前的瀏覽器是否支援啟用功能 瀏覽預先載入。