บทความ "เพิ่มความเร็วของ Service Worker ด้วยการโหลดการนําทางล่วงหน้า" อธิบายความหมายของการโหลดการนําทางล่วงหน้าและประโยชน์ที่เว็บแอปได้รับเมื่อ Service Worker ไม่ได้จัดการคําขอการนําทางอย่างชัดเจน
โมดูลนี้ทํางานอย่างไร
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()
จะตรวจหาการอัปเดตเบราว์เซอร์ขณะรันไทม์ และจะพยายาม เปิดใช้งานการโหลดล่วงหน้าสำหรับการนำทาง หากเบราว์เซอร์ปัจจุบันรองรับ คุณจึงเรียก enable()
โดยไม่มีข้อกำหนดใน Service Worker ได้
โปรดทราบว่าเบราว์เซอร์เหล่านั้นจะไม่ได้รับประโยชน์จากการลดเวลาในการตอบสนองในการนําทาง และเราขอแนะนําให้คุณวัดผลที่อาจเกิดขึ้นกับประสิทธิภาพของการนำส่ง Service Worker ที่ไม่จัดการคำขอการนําทางและไม่ใช้การโหลดล่วงหน้าของการนําทางอย่างละเอียด
เมธอด
disable()
workbox-navigation-preload.disable(): void
หากเบราว์เซอร์รองรับการโหลดหน้าเว็บที่กําลังนําทางล่วงหน้า ตัวเลือกนี้จะปิดใช้ฟีเจอร์ดังกล่าว
enable()
workbox-navigation-preload.enable(
headerValue?: string,
): void
หากเบราว์เซอร์รองรับการโหลดหน้าเว็บล่วงหน้าเมื่อไปยังส่วนต่างๆ ระบบจะเปิดใช้ฟีเจอร์นี้
พารามิเตอร์
- headerValue
สตริง ไม่บังคับ
isSupported()
workbox-navigation-preload.isSupported(): boolean
การคืนสินค้า
-
บูลีน
เบราว์เซอร์ปัจจุบันรองรับการเปิดใช้การโหลดหน้าเว็บล่วงหน้าหรือไม่