เมื่อมีการเปิดตัว Service Worker เป็นครั้งแรก ก็เกิดกลยุทธ์การแคชทั่วไปขึ้น กลยุทธ์การแคชคือรูปแบบที่กําหนดวิธีให้บริการของ Service Worker สร้างการตอบกลับหลังจากได้รับเหตุการณ์การดึงข้อมูล
workbox-strategies
มีกลยุทธ์การแคชที่ใช้กันมากที่สุดเพื่อให้คุณนำไปใช้ใน Service Worker ได้โดยง่าย
เราจะไม่ลงรายละเอียดมากนักนอกเหนือจากกลยุทธ์ที่ Workbox รองรับ แต่คุณสามารถดูข้อมูลเพิ่มเติมในตำราอาหารออฟไลน์
การใช้กลยุทธ์
ในตัวอย่างนี้ เราจะแสดงวิธีใช้กลยุทธ์การแคชของ Workbox กับ workbox-routing
มีตัวเลือกบางอย่างที่คุณกําหนดได้กับกลยุทธ์แต่ละรายการที่กล่าวถึงในส่วนการกําหนดค่ากลยุทธ์ของเอกสารนี้
ในส่วนการใช้งานขั้นสูง เราจะอธิบายวิธีใช้กลยุทธ์การแคชโดยตรงโดยไม่ต้องใช้ workbox-routing
Stale-While-Revalidate
รูปแบบ stale-while-revalidate ช่วยให้คุณตอบกลับคำขอได้เร็วที่สุดด้วยคำตอบที่แคชไว้หากมี และกลับไปใช้คำขอเครือข่ายหากคำตอบไม่ได้แคชไว้ จากนั้นระบบจะใช้คําขอเครือข่ายเพื่ออัปเดตแคช ซึ่งต่างจากการใช้งานบางอย่างของ "ใช้ข้อมูลเก่าขณะตรวจสอบอีกครั้ง" เนื่องจากกลยุทธ์นี้จะส่งคำขอตรวจสอบอีกครั้งเสมอ ไม่ว่าคำตอบที่แคชไว้จะเก่าแค่ไหนก็ตาม
นี่เป็นกลยุทธ์ที่พบได้ทั่วไปซึ่งการมีทรัพยากรล่าสุดไม่สำคัญต่อแอปพลิเคชัน
import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';
registerRoute(
({url}) => url.pathname.startsWith('/images/avatars/'),
new StaleWhileRevalidate()
);
แคชก่อน (แคชที่เปลี่ยนกลับไปใช้เครือข่าย)
เว็บแอปแบบออฟไลน์จะอาศัยแคชเป็นอย่างมาก แต่สำหรับชิ้นงานที่ไม่ใช่ข้อมูลสําคัญและสามารถแคชได้ทีละน้อย ตัวเลือกที่ดีที่สุดคือแคชก่อน
หากมีคำตอบในแคช ระบบจะดำเนินการตามคำขอโดยใช้คำตอบที่แคชไว้และจะไม่ใช้เครือข่ายเลย หากไม่มีการตอบสนองที่แคชไว้ คำขอจะได้รับการตอบสนองจากคำขอเครือข่าย และระบบจะแคชการตอบสนองไว้เพื่อให้คำขอถัดไปแสดงจากแคชโดยตรง
import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
registerRoute(({request}) => request.destination === 'style', new CacheFirst());
เครือข่ายก่อน (เครือข่ายเปลี่ยนกลับไปใช้แคช)
สําหรับคําขอที่อัปเดตบ่อยครั้ง กลยุทธ์เครือข่ายก่อนเป็นโซลูชันที่เหมาะที่สุด โดยค่าเริ่มต้น ระบบจะพยายามดึงข้อมูลการตอบกลับล่าสุดจากเครือข่าย หากคำขอสำเร็จ ระบบจะใส่การตอบกลับไว้ในแคช หากเครือข่ายแสดงการตอบกลับไม่สำเร็จ ระบบจะใช้การตอบกลับที่แคชไว้
import {registerRoute} from 'workbox-routing';
import {NetworkFirst} from 'workbox-strategies';
registerRoute(
({url}) => url.pathname.startsWith('/social-timeline/'),
new NetworkFirst()
);
เครือข่ายเท่านั้น
หากคุณต้องการให้เครือข่ายดำเนินการตามคําขอที่เฉพาะเจาะจง ให้ใช้กลยุทธ์เครือข่ายเท่านั้น
import {registerRoute} from 'workbox-routing';
import {NetworkOnly} from 'workbox-strategies';
registerRoute(({url}) => url.pathname.startsWith('/admin/'), new NetworkOnly());
แคชเท่านั้น
กลยุทธ์แคชเท่านั้นจะดึงข้อมูลการตอบกลับจากแคช ตัวเลือกนี้มีการใช้งานน้อยใน Workbox แต่อาจมีประโยชน์หากคุณมีขั้นตอนการแคชล่วงหน้าของคุณเอง
import {registerRoute} from 'workbox-routing';
import {CacheOnly} from 'workbox-strategies';
registerRoute(({url}) => url.pathname.startsWith('/app/v2/'), new CacheOnly());
การกำหนดค่ากลยุทธ์
กลยุทธ์ทั้งหมดช่วยให้คุณกําหนดค่าสิ่งต่อไปนี้ได้
- ชื่อแคชที่จะใช้ในกลยุทธ์
- ข้อจํากัดการหมดอายุของแคชที่จะใช้ในกลยุทธ์
- อาร์เรย์ของปลั๊กอินที่จะเรียกเมธอดวงจรเมื่อดึงข้อมูลและแคชคําขอ
การเปลี่ยนแคชที่กลยุทธ์ใช้
คุณเปลี่ยนกลยุทธ์แคชที่ใช้ได้โดยระบุชื่อแคช ซึ่งจะเป็นประโยชน์หากคุณต้องการแยกชิ้นงานออกเพื่อช่วยแก้ไขข้อบกพร่อง
import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
registerRoute(
({request}) => request.destination === 'image',
new CacheFirst({
cacheName: 'image-cache',
})
);
การใช้ปลั๊กอิน
Workbox มาพร้อมกับชุดปลั๊กอินที่ใช้กับกลยุทธ์เหล่านี้ได้
- workbox-background-sync
- workbox-broadcast-update
- workbox-cacheable-response
- workbox-expiration
- workbox-range-requests
หากต้องการใช้ปลั๊กอินเหล่านี้ (หรือปลั๊กอินที่กําหนดเอง) เพียงส่งอินสแตนซ์ไปยังตัวเลือก plugins
import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
import {ExpirationPlugin} from 'workbox-expiration';
registerRoute(
({request}) => request.destination === 'image',
new CacheFirst({
cacheName: 'image-cache',
plugins: [
new ExpirationPlugin({
// Only cache requests for a week
maxAgeSeconds: 7 * 24 * 60 * 60,
// Only cache 10 requests.
maxEntries: 10,
}),
],
})
);
กลยุทธ์ที่กำหนดเอง
นอกจากการกำหนดค่ากลยุทธ์แล้ว Workbox ยังให้คุณสร้างกลยุทธ์ที่กำหนดเองได้อีกด้วย
ซึ่งทำได้โดยการนําเข้าและขยายStrategy
คลาสพื้นฐานจาก workbox-strategies
ดังนี้
import {Strategy} from 'workbox-strategies';
class NewStrategy extends Strategy {
_handle(request, handler) {
// Define handling logic here
}
}
ในตัวอย่างนี้ handle()
ใช้เป็นกลยุทธ์คำขอเพื่อกำหนดตรรกะการจัดการที่เฉพาะเจาะจง กลยุทธ์คำขอที่ใช้ได้มี 2 กลยุทธ์ ดังนี้
handle()
: ดำเนินการตามกลยุทธ์คำขอและแสดงผลPromise
ที่จะเป็นResponse
โดยเรียกการเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดhandleAll()
: คล้ายกับhandle()
แต่แสดงผลออบเจ็กต์Promise
2 รายการ รายการแรกเทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 จะแสดงผลเมื่อคำมั่นสัญญาที่เพิ่มลงในevent.waitUntil()
ภายในกลยุทธ์เสร็จสมบูรณ์
กลยุทธ์คำขอทั้ง 2 รายการจะเรียกใช้ด้วยพารามิเตอร์ 2 รายการ ได้แก่
request
:Request
ที่กลยุทธ์จะแสดงผลลัพธ์handler
: อินสแตนซ์StrategyHandler
ที่สร้างขึ้นโดยอัตโนมัติสําหรับกลยุทธ์ปัจจุบัน
การสร้างกลยุทธ์ใหม่
ต่อไปนี้คือตัวอย่างกลยุทธ์ใหม่ที่นําลักษณะการทํางานของ NetworkOnly
มาใช้อีกครั้ง
class NewNetworkOnlyStrategy extends Strategy {
_handle(request, handler) {
return handler.fetch(request);
}
}
โปรดสังเกตว่ามีการเรียกใช้ handler.fetch()
แทนเมธอด fetch
ดั้งเดิม คลาส StrategyHandler
มีการดำเนินการดึงข้อมูลและแคชจำนวนหนึ่งที่ใช้ได้ทุกครั้งที่มีการใช้ handle()
หรือ
handleAll()
fetch
: ดึงข้อมูลคําขอที่ระบุ และเรียกใช้เมธอดวงจรชีวิตของปลั๊กอินrequestWillFetch()
,fetchDidSucceed()
และfetchDidFail()
cacheMatch
: จับคู่คําขอจากแคช และเรียกใช้เมธอดวงจรของปลั๊กอินcacheKeyWillBeUsed()
และcachedResponseWillBeUsed()
cachePut
: ใส่คู่คําขอ/คําตอบในแคช และเรียกใช้เมธอดวงจรชีวิตของปลั๊กอินcacheKeyWillBeUsed()
,cacheWillUpdate()
และcacheDidUpdate()
fetchAndCachePut
: เรียกใช้fetch()
และเรียกใช้cachePut()
ในเบื้องหลังเมื่อได้รับคําตอบจากfetch()
hasCallback
: ใช้ Callback เป็นอินพุตและแสดงผลเป็น "จริง" หากกลยุทธ์มีพลูกินอย่างน้อย 1 รายการที่มี Callback ที่ระบุrunCallbacks
: เรียกใช้การเรียกกลับของปลั๊กอินทั้งหมดที่ตรงกับชื่อที่ระบุตามลําดับ โดยส่งออบเจ็กต์พารามิเตอร์ที่ระบุ (ผสานกับสถานะปลั๊กอินปัจจุบัน) เป็นอาร์กิวเมนต์เดียวiterateCallbacks
: ยอมรับการเรียกกลับและแสดงผลรายการที่วนซ้ำได้ของการเรียกกลับของปลั๊กอินที่ตรงกัน โดยที่การเรียกกลับแต่ละรายการจะรวมอยู่ในสถานะตัวแฮนเดิลปัจจุบัน (กล่าวคือ เมื่อคุณเรียกใช้การเรียกกลับแต่ละรายการ ระบบจะผสานพารามิเตอร์ออบเจ็กต์ที่คุณส่งกับสถานะปัจจุบันของปลั๊กอิน)waitUntil
: เพิ่มการสัญญาไปยังสัญญาตลอดอายุที่ขยายเวลาของเหตุการณ์ที่เชื่อมโยงกับคำขอที่จัดการอยู่ (โดยปกติจะเป็นFetchEvent
)doneWaiting
: แสดงผลพรอมต์ที่แก้ไขเมื่อพรอมต์ทั้งหมดที่ส่งไปยังwaitUntil()
ได้รับการแก้ไขแล้วdestroy
: หยุดใช้กลยุทธ์และแก้ไขwaitUntil()
สัญญาที่รอดําเนินการอยู่ทันที
กลยุทธ์การแข่งขันเครือข่ายแคชที่กำหนดเอง
ตัวอย่างต่อไปนี้อิงตาม cache-network-race จากตำราอาหารแบบออฟไลน์ (ซึ่ง Workbox ไม่มีให้) แต่ดำเนินการไปอีกขั้นและอัปเดตแคชทุกครั้งหลังจากคำขอเครือข่ายสำเร็จ นี่เป็นตัวอย่างกลยุทธ์ที่ซับซ้อนมากขึ้นซึ่งใช้การดําเนินการหลายรายการ
import {Strategy} from 'workbox-strategies';
class CacheNetworkRace extends Strategy {
_handle(request, handler) {
const fetchAndCachePutDone = handler.fetchAndCachePut(request);
const cacheMatchDone = handler.cacheMatch(request);
return new Promise((resolve, reject) => {
fetchAndCachePutDone.then(resolve);
cacheMatchDone.then(response => response && resolve(response));
// Reject if both network and cache error or find no response.
Promise.allSettled([fetchAndCachePutDone, cacheMatchDone]).then(
results => {
const [fetchAndCachePutResult, cacheMatchResult] = results;
if (
fetchAndCachePutResult.status === 'rejected' &&
!cacheMatchResult.value
) {
reject(fetchAndCachePutResult.reason);
}
}
);
});
}
}
การใช้งานขั้นสูง
หากต้องการใช้กลยุทธ์ในตรรกะการเรียกข้อมูลเหตุการณ์ของคุณเอง คุณสามารถใช้คลาสกลยุทธ์เพื่อเรียกใช้คําขอผ่านกลยุทธ์ที่เฉพาะเจาะจงได้
ตัวอย่างเช่น หากต้องการใช้กลยุทธ์ "ใช้ข้อมูลเก่าระหว่างที่ตรวจสอบอีกครั้ง" ให้ทําดังนี้
self.addEventListener('fetch', event => {
const {request} = event;
const url = new URL(request.url);
if (url.origin === location.origin && url.pathname === '/') {
event.respondWith(new StaleWhileRevalidate().handle({event, request}));
}
});
คุณดูรายชื่อชั้นเรียนที่มีได้ในเอกสารอ้างอิงสำหรับ Workbox Strategy
ประเภท
CacheFirst
การใช้กลยุทธ์คำขอใช้แคชก่อน
กลยุทธ์แคชก่อนมีประโยชน์สําหรับชิ้นงานที่แก้ไขแล้ว เช่น URL อย่างเช่น /styles/example.a8f5f1.css
เนื่องจากสามารถแคชได้เป็นเวลานาน
หากคําขอเครือข่ายไม่สําเร็จและไม่มีรายการที่ตรงกันในแคช ระบบจะแสดงข้อยกเว้น WorkboxError
พร็อพเพอร์ตี้
-
constructor
โมฆะ
สร้างอินสแตนซ์ใหม่ของกลยุทธ์และตั้งค่าพร็อพเพอร์ตี้ตัวเลือกที่บันทึกไว้ทั้งหมดเป็นพร็อพเพอร์ตี้อินสแตนซ์สาธารณะ
หมายเหตุ: หากคลาสกลยุทธ์ที่กําหนดเองขยายคลาส Strategy พื้นฐานและไม่จำเป็นต้องใช้พร็อพเพอร์ตี้เพิ่มเติมจากเหล่านี้ ก็ไม่จำเป็นต้องกำหนดคอนสตรัคเตอร์ของตัวเอง
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(options?: StrategyOptions) => {...}
-
ตัวเลือก
StrategyOptions ไม่บังคับ
-
returns
-
-
cacheName
สตริง
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
-
_awaitComplete
โมฆะ
ฟังก์ชัน
_awaitComplete
มีรูปแบบดังนี้(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
โมฆะ
ฟังก์ชัน
_getResponse
มีรูปแบบดังนี้(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<Response>
-
-
แฮนเดิล
โมฆะ
ดำเนินการตามกลยุทธ์คำขอและแสดงผล
Promise
ที่จะแก้ไขด้วยResponse
ซึ่งจะเรียกใช้การเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดเมื่ออินสแตนซ์กลยุทธ์ลงทะเบียนกับ Workbox
workbox-routing.Route
ระบบจะเรียกใช้เมธอดนี้โดยอัตโนมัติเมื่อเส้นทางตรงกันหรือจะใช้เมธอดนี้ใน
FetchEvent
listener แบบสแตนด์อโลนโดยส่งไปยังevent.respondWith()
ก็ได้ฟังก์ชัน
handle
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
Promise<Response>
-
-
handleAll
โมฆะ
คล้ายกับ
workbox-strategies.Strategy~handle
แต่แทนที่จะแสดงผลเพียงPromise
ที่แก้ไขเป็นResponse
แต่จะแสดงผลเป็นทูเปิลของ Promise[response, done]
โดยที่รายการแรก (response
) เทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 คือ Promise ที่จะแก้ไขเมื่อ Promise ที่เพิ่มลงในevent.waitUntil()
เสร็จสมบูรณ์แล้ว ซึ่งเป็นส่วนหนึ่งของการดำเนินการตามกลยุทธ์คุณสามารถรอ
done
การยืนยันเพื่อให้แน่ใจว่างานเพิ่มเติมที่กลยุทธ์ทํา (โดยปกติคือการแคชคําตอบ) เสร็จสมบูรณ์ฟังก์ชัน
handleAll
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
[Promise<Response>, Promise<void>]
มัดข้อมูลของ [response, done] promise ที่ใช้ระบุได้ว่าเมื่อใดที่การตอบสนองจะได้รับการแก้ไข และเมื่อใดที่ตัวแฮนเดิลทํางานเสร็จสิ้นแล้ว
-
CacheOnly
การใช้กลยุทธ์คำขอแคชเท่านั้น
คลาสนี้จะมีประโยชน์หากคุณต้องการใช้ประโยชน์จากปลั๊กอิน Workbox
หากไม่มีรายการที่ตรงกันในแคช ระบบจะแสดงข้อยกเว้น WorkboxError
พร็อพเพอร์ตี้
-
constructor
โมฆะ
สร้างอินสแตนซ์ใหม่ของกลยุทธ์และตั้งค่าพร็อพเพอร์ตี้ตัวเลือกที่บันทึกไว้ทั้งหมดเป็นพร็อพเพอร์ตี้อินสแตนซ์สาธารณะ
หมายเหตุ: หากคลาสกลยุทธ์ที่กําหนดเองขยายคลาส Strategy พื้นฐานและไม่จำเป็นต้องใช้พร็อพเพอร์ตี้เพิ่มเติมจากเหล่านี้ ก็ไม่จำเป็นต้องกำหนดคอนสตรัคเตอร์ของตัวเอง
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(options?: StrategyOptions) => {...}
-
ตัวเลือก
StrategyOptions ไม่บังคับ
-
returns
-
-
cacheName
สตริง
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
-
_awaitComplete
โมฆะ
ฟังก์ชัน
_awaitComplete
มีรูปแบบดังนี้(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
โมฆะ
ฟังก์ชัน
_getResponse
มีรูปแบบดังนี้(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<Response>
-
-
แฮนเดิล
โมฆะ
ดำเนินการตามกลยุทธ์คำขอและแสดงผล
Promise
ที่จะแก้ไขด้วยResponse
ซึ่งจะเรียกใช้การเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดเมื่ออินสแตนซ์กลยุทธ์ลงทะเบียนกับ Workbox
workbox-routing.Route
ระบบจะเรียกใช้เมธอดนี้โดยอัตโนมัติเมื่อเส้นทางตรงกันหรือจะใช้เมธอดนี้ใน
FetchEvent
listener แบบสแตนด์อโลนโดยส่งไปยังevent.respondWith()
ก็ได้ฟังก์ชัน
handle
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
Promise<Response>
-
-
handleAll
โมฆะ
คล้ายกับ
workbox-strategies.Strategy~handle
แต่แทนที่จะแสดงผลเพียงPromise
ที่แก้ไขเป็นResponse
แต่จะแสดงผลเป็นทูเปิลของ Promise[response, done]
โดยที่รายการแรก (response
) เทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 คือ Promise ที่จะแก้ไขเมื่อ Promise ที่เพิ่มลงในevent.waitUntil()
เสร็จสมบูรณ์แล้ว ซึ่งเป็นส่วนหนึ่งของการดำเนินการตามกลยุทธ์คุณสามารถรอ
done
การยืนยันเพื่อให้แน่ใจว่างานเพิ่มเติมที่กลยุทธ์ทํา (โดยปกติคือการแคชคําตอบ) เสร็จสมบูรณ์ฟังก์ชัน
handleAll
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
[Promise<Response>, Promise<void>]
มัดข้อมูล [response, done] ที่ใช้เป็นสัญญาซึ่งใช้ระบุได้ว่าเมื่อใดที่การตอบสนองจะได้รับการแก้ไข และเมื่อใดที่ตัวแฮนเดิลทํางานเสร็จสิ้นแล้ว
-
NetworkFirst
การใช้กลยุทธ์คำขอเครือข่ายก่อน
โดยค่าเริ่มต้น กลยุทธ์นี้จะแคชการตอบกลับที่มีรหัสสถานะ 200 รวมถึงการตอบกลับแบบทึบ การตอบกลับแบบทึบคือคำขอข้ามโดเมนที่การตอบกลับไม่รองรับ CORS
หากคําขอเครือข่ายไม่สําเร็จและไม่มีรายการที่ตรงกันในแคช ระบบจะแสดงข้อยกเว้น WorkboxError
พร็อพเพอร์ตี้
-
constructor
โมฆะ
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(options?: NetworkFirstOptions) => {...}
-
ตัวเลือก
NetworkFirstOptions ไม่บังคับ
-
returns
-
-
cacheName
สตริง
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
-
_awaitComplete
โมฆะ
ฟังก์ชัน
_awaitComplete
มีรูปแบบดังนี้(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
โมฆะ
ฟังก์ชัน
_getResponse
มีรูปแบบดังนี้(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<Response>
-
-
แฮนเดิล
โมฆะ
ดำเนินการตามกลยุทธ์คำขอและแสดงผล
Promise
ที่แก้ไขด้วยResponse
ซึ่งจะเรียกใช้การเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดเมื่ออินสแตนซ์กลยุทธ์ลงทะเบียนกับ Workbox
workbox-routing.Route
ระบบจะเรียกใช้เมธอดนี้โดยอัตโนมัติเมื่อเส้นทางตรงกันหรือจะใช้เมธอดนี้ใน
FetchEvent
listener แบบสแตนด์อโลนโดยส่งไปยังevent.respondWith()
ก็ได้ฟังก์ชัน
handle
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
Promise<Response>
-
-
handleAll
โมฆะ
คล้ายกับ
workbox-strategies.Strategy~handle
แต่แทนที่จะแสดงผลเพียงPromise
ที่แก้ไขเป็นResponse
แต่จะแสดงผลเป็นทูเปิลของ Promise[response, done]
โดยที่รายการแรก (response
) เทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 คือ Promise ที่จะแก้ไขเมื่อ Promise ที่เพิ่มลงในevent.waitUntil()
เสร็จสมบูรณ์แล้ว ซึ่งเป็นส่วนหนึ่งของการดำเนินการตามกลยุทธ์คุณสามารถรอ
done
การยืนยันเพื่อให้แน่ใจว่างานเพิ่มเติมที่กลยุทธ์ทํา (โดยปกติคือการแคชคําตอบ) เสร็จสมบูรณ์ฟังก์ชัน
handleAll
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
[Promise<Response>, Promise<void>]
มัดข้อมูลของ [response, done] promise ที่ใช้ระบุได้ว่าเมื่อใดที่การตอบสนองจะได้รับการแก้ไข และเมื่อใดที่ตัวแฮนเดิลทํางานเสร็จสิ้นแล้ว
-
NetworkFirstOptions
พร็อพเพอร์ตี้
-
cacheName
สตริง ไม่บังคับ
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
networkTimeoutSeconds
ตัวเลข ไม่บังคับ
-
ปลั๊กอิน
WorkboxPlugin[] ไม่บังคับ
NetworkOnly
การใช้กลยุทธ์คำขอเครือข่ายเท่านั้น
คลาสนี้จะมีประโยชน์หากคุณต้องการใช้ประโยชน์จากปลั๊กอิน Workbox
หากคำขอเครือข่ายไม่สำเร็จ ระบบจะแสดงข้อยกเว้น WorkboxError
พร็อพเพอร์ตี้
-
constructor
โมฆะ
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(options?: NetworkOnlyOptions) => {...}
-
ตัวเลือก
NetworkOnlyOptions ไม่บังคับ
-
returns
-
-
cacheName
สตริง
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
-
_awaitComplete
โมฆะ
ฟังก์ชัน
_awaitComplete
มีรูปแบบดังนี้(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
โมฆะ
ฟังก์ชัน
_getResponse
มีรูปแบบดังนี้(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<Response>
-
-
แฮนเดิล
โมฆะ
ดำเนินการตามกลยุทธ์คำขอและแสดงผล
Promise
ที่แก้ไขด้วยResponse
ซึ่งจะเรียกใช้การเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดเมื่ออินสแตนซ์กลยุทธ์ลงทะเบียนกับ Workbox
workbox-routing.Route
ระบบจะเรียกใช้เมธอดนี้โดยอัตโนมัติเมื่อเส้นทางตรงกันหรือจะใช้เมธอดนี้ใน
FetchEvent
listener แบบสแตนด์อโลนโดยส่งไปยังevent.respondWith()
ก็ได้ฟังก์ชัน
handle
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
Promise<Response>
-
-
handleAll
โมฆะ
คล้ายกับ
workbox-strategies.Strategy~handle
แต่แทนที่จะแสดงผลเพียงPromise
ที่แก้ไขเป็นResponse
แต่จะแสดงผลเป็นทูเปิลของ Promise[response, done]
โดยที่รายการแรก (response
) เทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 คือ Promise ที่จะแก้ไขเมื่อ Promise ที่เพิ่มลงในevent.waitUntil()
เสร็จสมบูรณ์แล้ว ซึ่งเป็นส่วนหนึ่งของการดำเนินการตามกลยุทธ์คุณสามารถรอ
done
การยืนยันเพื่อให้แน่ใจว่างานเพิ่มเติมที่กลยุทธ์ทํา (โดยปกติคือการแคชคําตอบ) เสร็จสมบูรณ์ฟังก์ชัน
handleAll
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
[Promise<Response>, Promise<void>]
มัดข้อมูลของ [response, done] promise ที่ใช้ระบุได้ว่าเมื่อใดที่การตอบสนองจะได้รับการแก้ไข และเมื่อใดที่ตัวแฮนเดิลทํางานเสร็จสิ้นแล้ว
-
NetworkOnlyOptions
พร็อพเพอร์ตี้
-
fetchOptions
RequestInit ไม่บังคับ
-
networkTimeoutSeconds
ตัวเลข ไม่บังคับ
-
ปลั๊กอิน
WorkboxPlugin[] ไม่บังคับ
StaleWhileRevalidate
การใช้กลยุทธ์คำขอstale-while-revalidate
ระบบจะขอทรัพยากรจากทั้งแคชและเครือข่ายพร้อมกัน กลยุทธ์จะตอบกลับด้วยเวอร์ชันที่แคชไว้หากมี มิเช่นนั้นก็จะรอการตอบกลับจากเครือข่าย แคชจะอัปเดตด้วยการตอบกลับของเครือข่ายเมื่อคำขอแต่ละรายการสำเร็จ
โดยค่าเริ่มต้น กลยุทธ์นี้จะแคชการตอบกลับที่มีรหัสสถานะ 200 รวมถึงการตอบกลับแบบทึบ การตอบกลับแบบทึบคือคำขอข้ามโดเมนที่การตอบกลับไม่รองรับ CORS
หากคําขอเครือข่ายไม่สําเร็จและไม่มีแคชที่ตรงกัน ระบบจะแสดงข้อยกเว้น WorkboxError
พร็อพเพอร์ตี้
-
constructor
โมฆะ
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(options?: StrategyOptions) => {...}
-
ตัวเลือก
StrategyOptions ไม่บังคับ
-
returns
-
-
cacheName
สตริง
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
-
_awaitComplete
โมฆะ
ฟังก์ชัน
_awaitComplete
มีรูปแบบดังนี้(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
โมฆะ
ฟังก์ชัน
_getResponse
มีรูปแบบดังนี้(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<Response>
-
-
แฮนเดิล
โมฆะ
ดำเนินการตามกลยุทธ์คำขอและแสดงผล
Promise
ที่แก้ไขด้วยResponse
ซึ่งจะเรียกใช้การเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดเมื่ออินสแตนซ์กลยุทธ์ลงทะเบียนกับ Workbox
workbox-routing.Route
ระบบจะเรียกใช้เมธอดนี้โดยอัตโนมัติเมื่อเส้นทางตรงกันหรือจะใช้เมธอดนี้ใน
FetchEvent
listener แบบสแตนด์อโลนโดยส่งไปยังevent.respondWith()
ก็ได้ฟังก์ชัน
handle
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
Promise<Response>
-
-
handleAll
โมฆะ
คล้ายกับ
workbox-strategies.Strategy~handle
แต่แทนที่จะแสดงผลเพียงPromise
ที่แก้ไขเป็นResponse
แต่จะแสดงผลเป็นทูเปิลของ Promise[response, done]
โดยที่รายการแรก (response
) เทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 คือ Promise ที่จะแก้ไขเมื่อ Promise ที่เพิ่มลงในevent.waitUntil()
เสร็จสมบูรณ์แล้ว ซึ่งเป็นส่วนหนึ่งของการดำเนินการตามกลยุทธ์คุณสามารถรอ
done
การยืนยันเพื่อให้แน่ใจว่างานเพิ่มเติมที่กลยุทธ์ทํา (โดยปกติคือการแคชคําตอบ) เสร็จสมบูรณ์ฟังก์ชัน
handleAll
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
[Promise<Response>, Promise<void>]
มัดข้อมูลของ [response, done] promise ที่ใช้ระบุได้ว่าเมื่อใดที่การตอบสนองจะได้รับการแก้ไข และเมื่อใดที่ตัวแฮนเดิลทํางานเสร็จสิ้นแล้ว
-
Strategy
คลาสฐานแบบนามธรรมที่คลาสกลยุทธ์อื่นๆ ทั้งหมดต้องขยายมาจากคลาสนี้
พร็อพเพอร์ตี้
-
constructor
โมฆะ
สร้างอินสแตนซ์ใหม่ของกลยุทธ์และตั้งค่าพร็อพเพอร์ตี้ตัวเลือกที่บันทึกไว้ทั้งหมดเป็นพร็อพเพอร์ตี้อินสแตนซ์สาธารณะ
หมายเหตุ: หากคลาสกลยุทธ์ที่กําหนดเองขยายคลาส Strategy พื้นฐานและไม่จำเป็นต้องใช้พร็อพเพอร์ตี้เพิ่มเติมจากเหล่านี้ ก็ไม่จำเป็นต้องกำหนดคอนสตรัคเตอร์ของตัวเอง
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(options?: StrategyOptions) => {...}
-
ตัวเลือก
StrategyOptions ไม่บังคับ
-
returns
-
-
cacheName
สตริง
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
-
_awaitComplete
โมฆะ
ฟังก์ชัน
_awaitComplete
มีรูปแบบดังนี้(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
โมฆะ
ฟังก์ชัน
_getResponse
มีรูปแบบดังนี้(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
แฮนเดิล
-
ส่งคำขอ
ส่งคำขอ
-
เหตุการณ์
ExtendableEvent
-
returns
Promise<Response>
-
-
_handle
โมฆะ
ฟังก์ชัน
_handle
มีรูปแบบดังนี้(request: Request, handler: StrategyHandler) => {...}
-
ส่งคำขอ
ส่งคำขอ
-
แฮนเดิล
-
returns
Promise<Response>
-
-
แฮนเดิล
โมฆะ
ดำเนินการตามกลยุทธ์คำขอและแสดงผล
Promise
ที่แก้ไขด้วยResponse
ซึ่งจะเรียกใช้การเรียกกลับของปลั๊กอินที่เกี่ยวข้องทั้งหมดเมื่ออินสแตนซ์กลยุทธ์ลงทะเบียนกับ Workbox
workbox-routing.Route
ระบบจะเรียกใช้เมธอดนี้โดยอัตโนมัติเมื่อเส้นทางตรงกันหรือจะใช้เมธอดนี้ใน
FetchEvent
listener แบบสแตนด์อโลนโดยส่งไปยังevent.respondWith()
ก็ได้ฟังก์ชัน
handle
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
Promise<Response>
-
-
handleAll
โมฆะ
คล้ายกับ
workbox-strategies.Strategy~handle
แต่แทนที่จะแสดงผลเพียงPromise
ที่แก้ไขเป็นResponse
แต่จะแสดงผลเป็นทูเปิลของ Promise[response, done]
โดยที่รายการแรก (response
) เทียบเท่ากับสิ่งที่handle()
แสดงผล และรายการที่ 2 คือ Promise ที่จะแก้ไขเมื่อ Promise ที่เพิ่มลงในevent.waitUntil()
เสร็จสมบูรณ์แล้ว ซึ่งเป็นส่วนหนึ่งของการดำเนินการตามกลยุทธ์คุณสามารถรอ
done
การยืนยันเพื่อให้แน่ใจว่างานเพิ่มเติมที่กลยุทธ์ทํา (โดยปกติคือการแคชคําตอบ) เสร็จสมบูรณ์ฟังก์ชัน
handleAll
มีรูปแบบดังนี้(options: FetchEvent | HandlerCallbackOptions) => {...}
-
ตัวเลือก
FetchEvent | HandlerCallbackOptions
FetchEvent
หรือออบเจ็กต์ที่มีพร็อพเพอร์ตี้ที่ระบุไว้ด้านล่าง
-
returns
[Promise<Response>, Promise<void>]
มัดข้อมูลของ [response, done] สัญญาที่ใช้เพื่อระบุว่าการตอบสนองได้รับการแก้ไขเมื่อใด รวมถึงเมื่อตัวแฮนเดิลทํางานเสร็จแล้ว
-
StrategyHandler
คลาสที่สร้างทุกครั้งที่อินสแตนซ์ Strategy เรียกใช้ workbox-strategies.Strategy~handle
หรือ workbox-strategies.Strategy~handleAll
ซึ่งรวมการดำเนินการดึงข้อมูลและแคชทั้งหมดไว้รอบการเรียกกลับของปลั๊กอิน และติดตามเวลาที่กลยุทธ์ "เสร็จสิ้น" (กล่าวคือ พรอมต์ event.waitUntil()
ที่เพิ่มทั้งหมดได้รับการแก้ไขแล้ว)
พร็อพเพอร์ตี้
-
constructor
โมฆะ
สร้างอินสแตนซ์ใหม่ซึ่งเชื่อมโยงกับกลยุทธ์และเหตุการณ์ที่ส่งมาซึ่งจัดการคําขอ
ตัวสร้างยังเริ่มต้นสถานะที่ส่งไปยังแต่ละปลั๊กอินที่จัดการคําขอนี้ด้วย
ฟังก์ชัน
constructor
มีรูปแบบดังนี้(strategy: Strategy, options: HandlerCallbackOptions) => {...}
-
กลยุทธ์
-
ตัวเลือก
-
returns
-
-
เหตุการณ์
ExtendableEvent
-
params
ใดก็ได้ ไม่บังคับ
-
ส่งคำขอ
ส่งคำขอ
-
URL
URL ไม่บังคับ
-
cacheMatch
โมฆะ
จับคู่คําขอจากแคช (และเรียกใช้เมธอด callback ของปลั๊กอินที่เกี่ยวข้อง) โดยใช้
cacheName
,matchOptions
และplugins
ที่กําหนดไว้ในออบเจ็กต์กลยุทธ์ระบบจะเรียกใช้เมธอดวงจรชีวิตของปลั๊กอินต่อไปนี้เมื่อใช้เมธอดนี้
- cacheKeyWillBeUsed()
- cachedResponseWillBeUsed()
ฟังก์ชัน
cacheMatch
มีรูปแบบดังนี้(key: RequestInfo) => {...}
-
แป้น
RequestInfo
คำขอหรือ URL ที่จะใช้เป็นคีย์แคช
-
returns
Promise<Response>
คำตอบที่ตรงกัน หากมี
-
cachePut
โมฆะ
ใส่คู่คําขอ/การตอบกลับในแคช (และเรียกใช้เมธอดการเรียกกลับของปลั๊กอินที่เกี่ยวข้อง) โดยใช้
cacheName
และplugins
ที่กําหนดไว้ในออบเจ็กต์กลยุทธ์ระบบจะเรียกใช้เมธอดวงจรชีวิตของปลั๊กอินต่อไปนี้เมื่อใช้เมธอดนี้
- cacheKeyWillBeUsed()
- cacheWillUpdate()
- cacheDidUpdate()
ฟังก์ชัน
cachePut
มีรูปแบบดังนี้(key: RequestInfo, response: Response) => {...}
-
แป้น
RequestInfo
คำขอหรือ URL ที่จะใช้เป็นคีย์แคช
-
การตอบกลับ
คำตอบ
การตอบสนองต่อแคช
-
returns
Promise<boolean>
false
หาก cacheWillUpdate ทําให้การตอบกลับไม่ได้รับการแคช และtrue
ในกรณีอื่นๆ
-
ทำลาย
โมฆะ
หยุดการเรียกใช้กลยุทธ์และแก้ไขสัญญาที่รอดำเนินการ
waitUntil()
โดยทันทีฟังก์ชัน
destroy
มีรูปแบบดังนี้() => {...}
-
doneWaiting
โมฆะ
แสดงผลลัพธ์ที่เป็นสัญญาที่จะแก้ไขเมื่อสัญญาทั้งหมดที่ส่งไปยัง
workbox-strategies.StrategyHandler~waitUntil
ได้รับการแก้ไขแล้วหมายเหตุ: งานที่ทำหลังจาก
doneWaiting()
ยุติแล้วควรส่งไปยังเมธอดwaitUntil()
ของเหตุการณ์ด้วยตนเอง (ไม่ใช่เมธอดwaitUntil()
ของตัวแฮนเดิลนี้) ไม่เช่นนั้นเธรด Service Worker อาจถูกหยุดการทำงานก่อนที่งานจะเสร็จสมบูรณ์ฟังก์ชัน
doneWaiting
มีรูปแบบดังนี้() => {...}
-
returns
Promise<void>
-
-
ดึงข้อมูล
โมฆะ
ดึงข้อมูลคําขอที่ระบุ (และเรียกใช้เมธอดการเรียกกลับของปลั๊กอินที่เกี่ยวข้อง) โดยใช้
fetchOptions
(สําหรับคําขอที่ไม่ใช่การนําทาง) และplugins
ที่กําหนดไว้ในออบเจ็กต์Strategy
ระบบจะเรียกใช้เมธอดวงจรชีวิตของปลั๊กอินต่อไปนี้เมื่อใช้เมธอดนี้
requestWillFetch()
fetchDidSucceed()
fetchDidFail()
ฟังก์ชัน
fetch
มีรูปแบบดังนี้(input: RequestInfo) => {...}
-
อินพุต
RequestInfo
URL หรือคําขอดึงข้อมูล
-
returns
Promise<Response>
-
fetchAndCachePut
โมฆะ
เรียกใช้
this.fetch()
และ (ในเบื้องหลัง) เรียกใช้this.cachePut()
กับคำตอบที่this.fetch()
สร้างขึ้นการเรียกใช้
this.cachePut()
จะเรียกใช้this.waitUntil()
โดยอัตโนมัติ คุณจึงไม่ต้องเรียกใช้waitUntil()
ในเหตุการณ์ด้วยตนเองฟังก์ชัน
fetchAndCachePut
มีรูปแบบดังนี้(input: RequestInfo) => {...}
-
อินพุต
RequestInfo
คำขอหรือ URL ที่จะดึงข้อมูลและแคช
-
returns
Promise<Response>
-
-
getCacheKey
โมฆะ
ตรวจสอบรายการปลั๊กอินเพื่อหา Callback ของ
cacheKeyWillBeUsed
และเรียกใช้ Callback เหล่านั้นตามลำดับที่พบ ระบบจะถือว่าออบเจ็กต์Request
สุดท้ายที่แสดงผลโดยปลั๊กอินสุดท้ายเป็นคีย์แคชสําหรับการอ่านและ/หรือการเขียนแคช หากไม่ได้ลงทะเบียนcacheKeyWillBeUsed
callback ของปลั๊กอิน ระบบจะแสดงคำขอที่ส่งผ่านโดยไม่มีการแก้ไขฟังก์ชัน
getCacheKey
มีรูปแบบดังนี้(request: Request, mode: "read"
| "write"
) => {...}-
ส่งคำขอ
ส่งคำขอ
-
โหมด
"read"
| "write"
-
returns
Promise<Request>
-
-
hasCallback
โมฆะ
แสดงผลเป็น "จริง" หากกลยุทธ์มีพลูกินอย่างน้อย 1 รายการที่มี callback ที่ระบุ
ฟังก์ชัน
hasCallback
มีรูปแบบดังนี้(name: C) => {...}
-
ชื่อ
C
ชื่อของคอลแบ็กที่จะตรวจสอบ
-
returns
บูลีน
-
-
iterateCallbacks
โมฆะ
ยอมรับการเรียกกลับและแสดงผลรายการที่วนซ้ำได้ของการเรียกกลับของปลั๊กอินที่ตรงกัน โดยที่การเรียกกลับแต่ละรายการจะรวมอยู่ในสถานะตัวแฮนเดิลปัจจุบัน (กล่าวคือ เมื่อคุณเรียกใช้การเรียกกลับแต่ละรายการ พารามิเตอร์ออบเจ็กต์ใดก็ตามที่คุณส่งจะผสานกับสถานะปัจจุบันของปลั๊กอิน)
ฟังก์ชัน
iterateCallbacks
มีรูปแบบดังนี้(name: C) => {...}
-
ชื่อ
C
ชื่อของ Callback ที่จะเรียกใช้
-
returns
Generator<NonNullable<indexedAccess>anyunknown>
-
-
runCallbacks
โมฆะ
เรียกใช้การเรียกกลับของปลั๊กอินทั้งหมดที่ตรงกับชื่อที่ระบุตามลําดับ โดยส่งออบเจ็กต์พารามิเตอร์ที่ระบุ (ผสานกับสถานะปลั๊กอินปัจจุบัน) เป็นอาร์กิวเมนต์เดียว
หมายเหตุ: เนื่องจากเมธอดนี้จะเรียกใช้ปลั๊กอินทั้งหมด จึงไม่เหมาะกับกรณีที่ต้องใช้ผลลัพธ์ของคอลแบ็กก่อนเรียกใช้คอลแบ็กถัดไป ดูวิธีจัดการเคสดังกล่าวได้ที่ด้านล่าง
workbox-strategies.StrategyHandler#iterateCallbacks
ฟังก์ชัน
runCallbacks
มีรูปแบบดังนี้(name: C, param: Omit<indexedAccess"state"
>) => {...}-
ชื่อ
C
ชื่อของคอลแบ็กที่จะเรียกใช้ภายในปลั๊กอินแต่ละรายการ
-
param
ละเว้น<indexedAccess"state"
>ออบเจ็กต์ที่จะส่งเป็นพารามิเตอร์แรก (และพารามิเตอร์เดียว) เมื่อเรียกใช้การเรียกกลับแต่ละรายการ ระบบจะผสานออบเจ็กต์นี้เข้ากับสถานะปลั๊กอินปัจจุบันก่อนการเรียกกลับ
-
returns
Promise<void>
-
-
waitUntil
โมฆะ
เพิ่มการสัญญาใน [extend lifetime promises]
https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises
ของเหตุการณ์ที่เชื่อมโยงกับคำขอที่จัดการ (โดยปกติจะเป็นFetchEvent
)หมายเหตุ: คุณสามารถรอ
workbox-strategies.StrategyHandler~doneWaiting
เพื่อดูว่าคำมั่นสัญญาที่เพิ่มทั้งหมดได้รับการชำระแล้วเมื่อใดฟังก์ชัน
waitUntil
มีรูปแบบดังนี้(promise: Promise<T>) => {...}
-
สัญญา
Promise<T>
สัญญาว่าจะเพิ่มการรับประกันอายุการใช้งานที่ขยายออกไปของกิจกรรมที่ทริกเกอร์คำขอ
-
returns
Promise<T>
-
StrategyOptions
พร็อพเพอร์ตี้
-
cacheName
สตริง ไม่บังคับ
-
fetchOptions
RequestInit ไม่บังคับ
-
matchOptions
CacheQueryOptions ไม่บังคับ
-
ปลั๊กอิน
WorkboxPlugin[] ไม่บังคับ