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