जब पहली बार सर्विस वर्कर लॉन्च किए गए थे, तब कैश मेमोरी में सेव करने की कुछ सामान्य रणनीतियां सामने आई थीं. कैशिंग की रणनीति एक ऐसा पैटर्न है जो यह तय करता है कि फ़ेच इवेंट मिलने के बाद, सर्विस वर्कर कैसे रिस्पॉन्स जनरेट करता है.
workbox-strategies, कैश मेमोरी में सेव करने की सबसे आम रणनीतियां उपलब्ध कराता है. इसलिए, इन्हें अपने सर्विस वर्कर में लागू करना आसान होता है.
हम Workbox के साथ काम करने वाली रणनीतियों के अलावा, ज़्यादा जानकारी नहीं देंगे. हालांकि, ऑफ़लाइन कुकबुक में ज़्यादा जानें.
रणनीतियों का इस्तेमाल करना
यहां दिए गए उदाहरणों में, हम आपको workbox-routing के साथ Workbox की कैश मेमोरी में सेव करने की रणनीतियों का इस्तेमाल करने का तरीका बताएंगे. हर रणनीति के लिए कुछ विकल्प तय किए जा सकते हैं. इनके बारे में इस दस्तावेज़ के 'रणनीतियां कॉन्फ़िगर करना' सेक्शन में बताया गया है.
ऐडवांस इस्तेमाल वाले सेक्शन में, हम आपको बताएंगे कि 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 में, रणनीतियां कॉन्फ़िगर करने के साथ-साथ, अपनी पसंद के मुताबिक रणनीतियां बनाने की सुविधा भी मिलती है.
workbox-strategies से Strategy बेस क्लास को इंपोर्ट और एक्सटेंड करके ऐसा किया जा सकता है:
import {Strategy} from 'workbox-strategies';
class NewStrategy extends Strategy {
_handle(request, handler) {
// Define handling logic here
}
}
इस उदाहरण में, handle() का इस्तेमाल अनुरोध की रणनीति के तौर पर किया गया है, ताकि अनुरोध को हैंडल करने के लिए खास लॉजिक तय किया जा सके. अनुरोध करने की दो रणनीतियों का इस्तेमाल किया जा सकता है:
handle(): अनुरोध की रणनीति लागू करें और एकPromiseदिखाएं, जोResponseके साथ रिज़ॉल्व होगा. साथ ही, काम के सभी प्लगिन कॉलबैक को लागू करेगा.handleAll(): यहhandle()जैसा ही है, लेकिन यह दोPromiseऑब्जेक्ट दिखाता है. पहला,handle()के बराबर है. दूसरा, रणनीति के तहतevent.waitUntil()में जोड़े गए प्रॉमिस पूरे होने पर रिज़ॉल्व हो जाएगा.
अनुरोध की दोनों रणनीतियों को दो पैरामीटर के साथ शुरू किया जाता है:
request:Requestके लिए रणनीति जवाब देगी.handler: यह मौजूदा रणनीति के लिए, अपने-आप बनाया गयाStrategyHandlerइंस्टेंस है.
नई रणनीति बनाना
यहां एक नई रणनीति का उदाहरण दिया गया है, जिसमें NetworkOnly के व्यवहार को फिर से लागू किया गया है:
class NewNetworkOnlyStrategy extends Strategy {
_handle(request, handler) {
return handler.fetch(request);
}
}
ध्यान दें कि नेटिव fetch तरीके के बजाय handler.fetch() को कॉल किया जाता है. StrategyHandler क्लास, फ़ेच और कैश मेमोरी से जुड़ी कई कार्रवाइयां उपलब्ध कराता है. इनका इस्तेमाल तब किया जा सकता है, जब handle() या handleAll() का इस्तेमाल किया जाता है:
fetch: यह दिए गए अनुरोध को फ़ेच करता है औरrequestWillFetch(),fetchDidSucceed(), औरfetchDidFail()प्लगिन के लाइफ़साइकल के तरीकों को लागू करता हैcacheMatch: यह कैश मेमोरी से मिले अनुरोध से मेल खाता है. साथ ही,cacheKeyWillBeUsed()औरcachedResponseWillBeUsed()प्लगिन के लाइफ़साइकल के तरीकों को शुरू करता हैcachePut: यह अनुरोध/जवाब के जोड़े को कैश मेमोरी में रखता है. साथ ही,cacheKeyWillBeUsed(),cacheWillUpdate(), औरcacheDidUpdate()प्लगिन के लाइफ़साइकल के तरीकों को लागू करता हैfetchAndCachePut: यहfetch()को कॉल करता है औरfetch()से मिले जवाब के आधार पर, बैकग्राउंड मेंcachePut()को चलाता है.hasCallback: यह कॉलबैक को इनपुट के तौर पर लेता है. साथ ही, अगर रणनीति में दिए गए कॉलबैक के साथ कम से कम एक प्लगिन है, तो यह सही वैल्यू दिखाता है.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);
}
}
);
});
}
}
ऐडवांस इस्तेमाल
अगर आपको फ़ेच इवेंट के अपने लॉजिक में रणनीतियों का इस्तेमाल करना है, तो रणनीति क्लास का इस्तेमाल करके, किसी खास रणनीति के ज़रिए अनुरोध किया जा सकता है.
उदाहरण के लिए, stale-while-revalidate रणनीति का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
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-strategies के रेफ़रंस दस्तावेज़ में देखी जा सकती है.
टाइप
CacheFirst
कैश मेमोरी को पहले इस्तेमाल करने की रणनीति को लागू करना.
कैश मेमोरी का इस्तेमाल करने की रणनीति, उन ऐसेट के लिए फ़ायदेमंद होती है जिनमें बदलाव किया गया है. जैसे, /styles/example.a8f5f1.css जैसे यूआरएल. ऐसा इसलिए, क्योंकि इन्हें लंबे समय तक कैश मेमोरी में सेव किया जा सकता है.
अगर नेटवर्क अनुरोध पूरा नहीं होता है और कैश मेमोरी में कोई मैच नहीं मिलता है, तो यह WorkboxError अपवाद दिखाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
शून्य
यह रणनीति का नया इंस्टेंस बनाता है और दस्तावेज़ में बताई गई सभी विकल्प प्रॉपर्टी को सार्वजनिक इंस्टेंस प्रॉपर्टी के तौर पर सेट करता है.
ध्यान दें: अगर कस्टम रणनीति क्लास, बेस रणनीति क्लास को बढ़ाती है और उसे इन प्रॉपर्टी के अलावा किसी और प्रॉपर्टी की ज़रूरत नहीं है, तो उसे अपना कंस्ट्रक्टर तय करने की ज़रूरत नहीं है.
constructorफ़ंक्शन इस तरह दिखता है:(options?: StrategyOptions) => {...}
-
विकल्प
StrategyOptions ज़रूरी नहीं है
-
returns
-
-
cacheName
स्ट्रिंग
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
प्लगिन
-
_awaitComplete
शून्य
_awaitCompleteफ़ंक्शन इस तरह दिखता है:(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
शून्य
_getResponseफ़ंक्शन इस तरह दिखता है:(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<Response>
-
-
हैंडल
शून्य
यह अनुरोध की रणनीति को लागू करता है और एक
Promiseदिखाता है. यहResponseके साथ हल हो जाएगा. साथ ही, इससे काम के सभी प्लगिन कॉलबैक शुरू हो जाएंगे.जब किसी रणनीति के इंस्टेंस को Workbox
workbox-routing.Routeके साथ रजिस्टर किया जाता है, तो यह तरीका अपने-आप कॉल हो जाता है. ऐसा तब होता है, जब रूट मैच करता है.इसके अलावा, इस तरीके का इस्तेमाल स्टैंडअलोन
FetchEventलिसनर में किया जा सकता है. इसके लिए, इसेevent.respondWith()में पास करें.handleफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
Promise<Response>
-
-
handleAll
शून्य
यह
workbox-strategies.Strategy~handleकी तरह ही काम करता है. हालांकि, यह सिर्फ़ एकPromiseदिखाता है, जोResponseमें बदल जाता है. इसके बजाय, यह[response, done]प्रॉमिस का एक टपल दिखाता है. इसमें पहला (response)handle()के बराबर होता है और दूसरा एक प्रॉमिस होता है. यह प्रॉमिस तब पूरा होता है, जब रणनीति के तहतevent.waitUntil()में जोड़े गए सभी प्रॉमिस पूरे हो जाते हैं.doneके पूरा होने का इंतज़ार करें, ताकि रणनीति के ज़रिए किए गए किसी भी अतिरिक्त काम (आम तौर पर, जवाबों को कैश मेमोरी में सेव करना) को पूरा किया जा सके.handleAllफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
[Promise<Response>, Promise<void>]
[response, done] का टपल, प्रॉमिस करता है कि इसका इस्तेमाल यह तय करने के लिए किया जा सकता है कि जवाब कब रिज़ॉल्व होगा. साथ ही, हैंडलर ने अपना काम कब पूरा किया.
-
CacheOnly
यह सिर्फ़ कैश मेमोरी से डेटा पाने की अनुरोध रणनीति को लागू करने का तरीका है.
अगर आपको किसी Workbox प्लगिन का फ़ायदा लेना है, तो यह क्लास आपके लिए काम की है.
अगर कैश मेमोरी में मौजूद डेटा मेल नहीं खाता है, तो यह WorkboxError अपवाद दिखाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
शून्य
यह रणनीति का नया इंस्टेंस बनाता है और दस्तावेज़ में बताई गई सभी विकल्प प्रॉपर्टी को सार्वजनिक इंस्टेंस प्रॉपर्टी के तौर पर सेट करता है.
ध्यान दें: अगर कस्टम रणनीति क्लास, बेस रणनीति क्लास को बढ़ाती है और उसे इन प्रॉपर्टी के अलावा किसी और प्रॉपर्टी की ज़रूरत नहीं है, तो उसे अपना कंस्ट्रक्टर तय करने की ज़रूरत नहीं है.
constructorफ़ंक्शन इस तरह दिखता है:(options?: StrategyOptions) => {...}
-
विकल्प
StrategyOptions ज़रूरी नहीं है
-
returns
-
-
cacheName
स्ट्रिंग
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
प्लगिन
-
_awaitComplete
शून्य
_awaitCompleteफ़ंक्शन इस तरह दिखता है:(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
शून्य
_getResponseफ़ंक्शन इस तरह दिखता है:(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<Response>
-
-
हैंडल
शून्य
यह अनुरोध की रणनीति को लागू करता है और एक
Promiseदिखाता है. यहResponseके साथ हल हो जाएगा. साथ ही, इससे काम के सभी प्लगिन कॉलबैक शुरू हो जाएंगे.जब किसी रणनीति के इंस्टेंस को Workbox
workbox-routing.Routeके साथ रजिस्टर किया जाता है, तो यह तरीका अपने-आप कॉल हो जाता है. ऐसा तब होता है, जब रूट मैच करता है.इसके अलावा, इस तरीके का इस्तेमाल स्टैंडअलोन
FetchEventलिसनर में किया जा सकता है. इसके लिए, इसेevent.respondWith()में पास करें.handleफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
Promise<Response>
-
-
handleAll
शून्य
यह
workbox-strategies.Strategy~handleकी तरह ही काम करता है. हालांकि, यह सिर्फ़ एकPromiseदिखाता है, जोResponseमें बदल जाता है. इसके बजाय, यह[response, done]प्रॉमिस का एक टपल दिखाता है. इसमें पहला (response)handle()के बराबर होता है और दूसरा एक प्रॉमिस होता है. यह प्रॉमिस तब पूरा होता है, जब रणनीति के तहतevent.waitUntil()में जोड़े गए सभी प्रॉमिस पूरे हो जाते हैं.doneके पूरा होने का इंतज़ार करें, ताकि रणनीति के ज़रिए किए गए किसी भी अतिरिक्त काम (आम तौर पर, जवाबों को कैश मेमोरी में सेव करना) को पूरा किया जा सके.handleAllफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
[Promise<Response>, Promise<void>]
[response, done] का टपल, प्रॉमिस करता है कि इसका इस्तेमाल यह तय करने के लिए किया जा सकता है कि जवाब कब रिज़ॉल्व होगा. साथ ही, हैंडलर ने अपना काम कब पूरा किया.
-
NetworkFirst
यह नेटवर्क फ़र्स्ट अनुरोध की रणनीति को लागू करता है.
डिफ़ॉल्ट रूप से, यह रणनीति 200 स्टेटस कोड वाले जवाबों के साथ-साथ ओपेक जवाबों को भी कैश मेमोरी में सेव करेगी. ओपेक रिस्पॉन्स, क्रॉस-ऑरिजिन अनुरोध होते हैं. इनमें रिस्पॉन्स, CORS के साथ काम नहीं करता.
अगर नेटवर्क अनुरोध पूरा नहीं होता है और कैश मेमोरी में कोई मैच नहीं मिलता है, तो यह WorkboxError अपवाद दिखाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
शून्य
constructorफ़ंक्शन इस तरह दिखता है:(options?: NetworkFirstOptions) => {...}
-
विकल्प
NetworkFirstOptions ज़रूरी नहीं है
-
returns
-
-
cacheName
स्ट्रिंग
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
प्लगिन
-
_awaitComplete
शून्य
_awaitCompleteफ़ंक्शन इस तरह दिखता है:(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
शून्य
_getResponseफ़ंक्शन इस तरह दिखता है:(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<Response>
-
-
हैंडल
शून्य
यह अनुरोध की रणनीति को लागू करता है और एक
Promiseदिखाता है. यहResponseके साथ हल हो जाएगा. साथ ही, इससे काम के सभी प्लगिन कॉलबैक शुरू हो जाएंगे.जब किसी रणनीति के इंस्टेंस को Workbox
workbox-routing.Routeके साथ रजिस्टर किया जाता है, तो यह तरीका अपने-आप कॉल हो जाता है. ऐसा तब होता है, जब रूट मैच करता है.इसके अलावा, इस तरीके का इस्तेमाल स्टैंडअलोन
FetchEventलिसनर में किया जा सकता है. इसके लिए, इसेevent.respondWith()में पास करें.handleफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
Promise<Response>
-
-
handleAll
शून्य
यह
workbox-strategies.Strategy~handleकी तरह ही काम करता है. हालांकि, यह सिर्फ़ एकPromiseदिखाता है, जोResponseमें बदल जाता है. इसके बजाय, यह[response, done]प्रॉमिस का एक टपल दिखाता है. इसमें पहला (response)handle()के बराबर होता है और दूसरा एक प्रॉमिस होता है. यह प्रॉमिस तब पूरा होता है, जब रणनीति के तहतevent.waitUntil()में जोड़े गए सभी प्रॉमिस पूरे हो जाते हैं.doneके पूरा होने का इंतज़ार करें, ताकि रणनीति के ज़रिए किए गए किसी भी अतिरिक्त काम (आम तौर पर, जवाबों को कैश मेमोरी में सेव करना) को पूरा किया जा सके.handleAllफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
[Promise<Response>, Promise<void>]
[response, done] का टपल, प्रॉमिस करता है कि इसका इस्तेमाल यह तय करने के लिए किया जा सकता है कि जवाब कब रिज़ॉल्व होगा. साथ ही, हैंडलर ने अपना काम कब पूरा किया.
-
NetworkFirstOptions
प्रॉपर्टी
-
cacheName
string ज़रूरी नहीं है
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
networkTimeoutSeconds
number ज़रूरी नहीं
-
प्लगिन
WorkboxPlugin[] optional
NetworkOnly
यह network-only अनुरोध की रणनीति को लागू करता है.
अगर आपको किसी Workbox प्लगिन का फ़ायदा लेना है, तो यह क्लास आपके लिए काम की है.
अगर नेटवर्क का अनुरोध पूरा नहीं होता है, तो यह WorkboxError अपवाद दिखाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
शून्य
constructorफ़ंक्शन इस तरह दिखता है:(options?: NetworkOnlyOptions) => {...}
-
विकल्प
NetworkOnlyOptions optional
-
returns
-
-
cacheName
स्ट्रिंग
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
प्लगिन
-
_awaitComplete
शून्य
_awaitCompleteफ़ंक्शन इस तरह दिखता है:(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
शून्य
_getResponseफ़ंक्शन इस तरह दिखता है:(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<Response>
-
-
हैंडल
शून्य
यह अनुरोध की रणनीति को लागू करता है और एक
Promiseदिखाता है. यहResponseके साथ हल हो जाएगा. साथ ही, इससे काम के सभी प्लगिन कॉलबैक शुरू हो जाएंगे.जब किसी रणनीति के इंस्टेंस को Workbox
workbox-routing.Routeके साथ रजिस्टर किया जाता है, तो यह तरीका अपने-आप कॉल हो जाता है. ऐसा तब होता है, जब रूट मैच करता है.इसके अलावा, इस तरीके का इस्तेमाल स्टैंडअलोन
FetchEventलिसनर में किया जा सकता है. इसके लिए, इसेevent.respondWith()में पास करें.handleफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
Promise<Response>
-
-
handleAll
शून्य
यह
workbox-strategies.Strategy~handleकी तरह ही काम करता है. हालांकि, यह सिर्फ़ एकPromiseदिखाता है, जोResponseमें बदल जाता है. इसके बजाय, यह[response, done]प्रॉमिस का एक टपल दिखाता है. इसमें पहला (response)handle()के बराबर होता है और दूसरा एक प्रॉमिस होता है. यह प्रॉमिस तब पूरा होता है, जब रणनीति के तहतevent.waitUntil()में जोड़े गए सभी प्रॉमिस पूरे हो जाते हैं.doneके पूरा होने का इंतज़ार करें, ताकि रणनीति के ज़रिए किए गए किसी भी अतिरिक्त काम (आम तौर पर, जवाबों को कैश मेमोरी में सेव करना) को पूरा किया जा सके.handleAllफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
[Promise<Response>, Promise<void>]
[response, done] का टपल, प्रॉमिस करता है कि इसका इस्तेमाल यह तय करने के लिए किया जा सकता है कि जवाब कब रिज़ॉल्व होगा. साथ ही, हैंडलर ने अपना काम कब पूरा किया.
-
NetworkOnlyOptions
प्रॉपर्टी
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
networkTimeoutSeconds
number ज़रूरी नहीं
-
प्लगिन
WorkboxPlugin[] optional
StaleWhileRevalidate
stale-while-revalidate अनुरोध की रणनीति को लागू करना.
कैश मेमोरी और नेटवर्क, दोनों से एक साथ संसाधनों का अनुरोध किया जाता है. अगर कैश मेमोरी में सेव किया गया वर्शन उपलब्ध है, तो रणनीति के तहत उसका इस्तेमाल किया जाएगा. अगर ऐसा नहीं है, तो नेटवर्क से मिलने वाले रिस्पॉन्स का इंतज़ार किया जाएगा. हर अनुरोध के पूरा होने पर, कैश मेमोरी को नेटवर्क रिस्पॉन्स के साथ अपडेट किया जाता है.
डिफ़ॉल्ट रूप से, यह रणनीति 200 स्टेटस कोड वाले जवाबों के साथ-साथ ओपेक जवाबों को भी कैश मेमोरी में सेव करेगी. ओपेक रिस्पॉन्स, क्रॉस-ऑरिजिन अनुरोध होते हैं. इनमें CORS काम नहीं करता.
अगर नेटवर्क अनुरोध पूरा नहीं होता है और कैश मेमोरी में कोई मैच नहीं मिलता है, तो यह WorkboxError अपवाद दिखाएगा.
प्रॉपर्टी
-
कंस्ट्रक्टर
शून्य
constructorफ़ंक्शन इस तरह दिखता है:(options?: StrategyOptions) => {...}
-
विकल्प
StrategyOptions ज़रूरी नहीं है
-
returns
-
-
cacheName
स्ट्रिंग
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
प्लगिन
-
_awaitComplete
शून्य
_awaitCompleteफ़ंक्शन इस तरह दिखता है:(responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
responseDone
Promise<Response>
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
शून्य
_getResponseफ़ंक्शन इस तरह दिखता है:(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<Response>
-
-
हैंडल
शून्य
यह अनुरोध की रणनीति को लागू करता है और एक
Promiseदिखाता है. यहResponseके साथ हल हो जाएगा. साथ ही, इससे काम के सभी प्लगिन कॉलबैक शुरू हो जाएंगे.जब किसी रणनीति के इंस्टेंस को Workbox
workbox-routing.Routeके साथ रजिस्टर किया जाता है, तो यह तरीका अपने-आप कॉल हो जाता है. ऐसा तब होता है, जब रूट मैच करता है.इसके अलावा, इस तरीके का इस्तेमाल स्टैंडअलोन
FetchEventलिसनर में किया जा सकता है. इसके लिए, इसेevent.respondWith()में पास करें.handleफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
Promise<Response>
-
-
handleAll
शून्य
यह
workbox-strategies.Strategy~handleकी तरह ही काम करता है. हालांकि, यह सिर्फ़ एकPromiseदिखाता है, जोResponseमें बदल जाता है. इसके बजाय, यह[response, done]प्रॉमिस का एक टपल दिखाता है. इसमें पहला (response)handle()के बराबर होता है और दूसरा एक प्रॉमिस होता है. यह प्रॉमिस तब पूरा होता है, जब रणनीति के तहतevent.waitUntil()में जोड़े गए सभी प्रॉमिस पूरे हो जाते हैं.doneके पूरा होने का इंतज़ार करें, ताकि रणनीति के ज़रिए किए गए किसी भी अतिरिक्त काम (आम तौर पर, जवाबों को कैश मेमोरी में सेव करना) को पूरा किया जा सके.handleAllफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
[Promise<Response>, Promise<void>]
[response, done] का टपल, प्रॉमिस करता है कि इसका इस्तेमाल यह तय करने के लिए किया जा सकता है कि जवाब कब रिज़ॉल्व होगा. साथ ही, हैंडलर ने अपना काम कब पूरा किया.
-
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>
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<void>
-
-
_getResponse
शून्य
_getResponseफ़ंक्शन इस तरह दिखता है:(handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}
-
हैंडलर
-
CANNOT TRANSLATE
अनुरोध
-
इवेंट
ExtendableEvent
-
returns
Promise<Response>
-
-
_handle
शून्य
_handleफ़ंक्शन इस तरह दिखता है:(request: Request, handler: StrategyHandler) => {...}
-
CANNOT TRANSLATE
अनुरोध
-
हैंडलर
-
returns
Promise<Response>
-
-
हैंडल
शून्य
यह अनुरोध की रणनीति को लागू करता है और एक
Promiseदिखाता है. यहResponseके साथ हल हो जाएगा. साथ ही, इससे काम के सभी प्लगिन कॉलबैक शुरू हो जाएंगे.जब किसी रणनीति के इंस्टेंस को Workbox
workbox-routing.Routeके साथ रजिस्टर किया जाता है, तो यह तरीका अपने-आप कॉल हो जाता है. ऐसा तब होता है, जब रूट मैच करता है.इसके अलावा, इस तरीके का इस्तेमाल स्टैंडअलोन
FetchEventलिसनर में किया जा सकता है. इसके लिए, इसेevent.respondWith()में पास करें.handleफ़ंक्शन इस तरह दिखता है:(options: FetchEvent | HandlerCallbackOptions) => {...}
-
विकल्प
FetchEvent | HandlerCallbackOptions
FetchEventया नीचे दी गई प्रॉपर्टी वाला ऑब्जेक्ट.
-
returns
Promise<Response>
-
-
handleAll
शून्य
यह
workbox-strategies.Strategy~handleकी तरह ही काम करता है. हालांकि, यह सिर्फ़ एकPromiseदिखाता है, जोResponseमें बदल जाता है. इसके बजाय, यह[response, done]प्रॉमिस का एक टपल दिखाता है. इसमें पहला (response)handle()के बराबर होता है और दूसरा एक प्रॉमिस होता है. यह प्रॉमिस तब पूरा होता है, जब रणनीति के तहत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फ़ंक्शन इस तरह दिखता है:(strategy: Strategy, options: HandlerCallbackOptions) => {...}
-
रणनीति वाले गेम
-
विकल्प
-
returns
-
-
इवेंट
ExtendableEvent
-
params
कोई भी ज़रूरी नहीं है
-
CANNOT TRANSLATE
अनुरोध
-
url
यूआरएल ज़रूरी नहीं है
-
cacheMatch
शून्य
यह रणनीति ऑब्जेक्ट पर तय किए गए
cacheName,matchOptions, औरpluginsका इस्तेमाल करके, कैश मेमोरी में मौजूद अनुरोध से मेल खाता है. साथ ही, लागू होने वाले किसी भी प्लगिन के कॉलबैक तरीकों को लागू करता है.इस तरीके का इस्तेमाल करने पर, प्लगिन के लाइफ़साइकल के ये तरीके लागू होते हैं:
- cacheKeyWillBeUsed()
- cachedResponseWillBeUsed()
cacheMatchफ़ंक्शन इस तरह दिखता है:(key: RequestInfo) => {...}
-
बटन
RequestInfo
कैश मेमोरी की कुंजी के तौर पर इस्तेमाल करने के लिए अनुरोध या यूआरएल.
-
returns
Promise<Response>
मिलता-जुलता जवाब, अगर मिलता है.
-
cachePut
शून्य
यह अनुरोध/जवाब के जोड़े को कैश मेमोरी में रखता है. साथ ही, लागू होने वाले किसी भी प्लगिन कॉलबैक तरीके को लागू करता है. इसके लिए, रणनीति ऑब्जेक्ट पर तय किए गए
cacheNameऔरpluginsका इस्तेमाल करता है.इस तरीके का इस्तेमाल करने पर, प्लगिन के लाइफ़साइकल के ये तरीके लागू होते हैं:
- cacheKeyWillBeUsed()
- cacheWillUpdate()
- cacheDidUpdate()
cachePutफ़ंक्शन इस तरह दिखता है:(key: RequestInfo, response: Response) => {...}
-
बटन
RequestInfo
कैश मेमोरी की कुंजी के तौर पर इस्तेमाल करने के लिए अनुरोध या यूआरएल.
-
जवाब
जवाब
कैश मेमोरी में सेव किया गया रिस्पॉन्स.
-
returns
Promise<boolean>
अगर cacheWillUpdate की वजह से रिस्पॉन्स को कैश मेमोरी में सेव नहीं किया गया है, तो
falseमिलता है. ऐसा न होने पर,trueमिलता है.
-
बंद करें
शून्य
यह रणनीति को लागू करना बंद कर देता है और
waitUntil()से जुड़े सभी वादों को तुरंत पूरा करता है.destroyफ़ंक्शन इस तरह दिखता है:() => {...} -
doneWaiting
शून्य
यह एक प्रॉमिस दिखाता है. यह तब रिज़ॉल्व होता है, जब
workbox-strategies.StrategyHandler~waitUntilको पास किए गए सभी प्रॉमिस सेटल हो जाते हैं.ध्यान दें:
doneWaiting()के सेटल होने के बाद किए गए किसी भी काम को, इवेंट केwaitUntil()तरीके में मैन्युअल तरीके से पास किया जाना चाहिए. ऐसा न करने पर, सर्विस वर्कर थ्रेड को आपका काम पूरा होने से पहले ही बंद किया जा सकता है.waitUntil()doneWaitingफ़ंक्शन इस तरह दिखता है:() => {...}-
returns
Promise<void>
-
-
लाएं
शून्य
यह फ़ंक्शन, दिए गए अनुरोध को फ़ेच करता है. साथ ही,
Strategyऑब्जेक्ट पर तय किए गएfetchOptions(नेविगेशन से जुड़े अनुरोधों के लिए) औरpluginsका इस्तेमाल करके, लागू होने वाले किसी भी प्लगिन कॉलबैक तरीके को लागू करता है.इस तरीके का इस्तेमाल करने पर, प्लगिन के लाइफ़साइकल के ये तरीके लागू होते हैं:
requestWillFetch()fetchDidSucceed()fetchDidFail()
fetchफ़ंक्शन इस तरह दिखता है:(input: RequestInfo) => {...}
-
इनपुट
RequestInfo
फ़ेच करने के लिए यूआरएल या अनुरोध.
-
returns
Promise<Response>
-
fetchAndCachePut
शून्य
this.fetch()से जनरेट किए गए जवाब पर,this.fetch()को कॉल करता है और बैकग्राउंड मेंthis.cachePut()को चलाता है.this.cachePut()को कॉल करने पर,this.waitUntil()अपने-आप शुरू हो जाता है. इसलिए, आपको इवेंट के दौरानwaitUntil()को मैन्युअल तरीके से कॉल करने की ज़रूरत नहीं होती.fetchAndCachePutफ़ंक्शन इस तरह दिखता है:(input: RequestInfo) => {...}
-
इनपुट
RequestInfo
फ़ेच और कैश मेमोरी में सेव करने के लिए अनुरोध या यूआरएल.
-
returns
Promise<Response>
-
-
getCacheKey
शून्य
यह प्लग इन की सूची में
cacheKeyWillBeUsedकॉलबैक की जांच करता है. साथ ही, क्रम से मिले किसी भी कॉलबैक को लागू करता है. आखिरी प्लगिन से मिले फ़ाइनलRequestऑब्जेक्ट को, कैश मेमोरी में मौजूद डेटा को पढ़ने और/या लिखने के लिए कैश मेमोरी की कुंजी के तौर पर इस्तेमाल किया जाता है. अगर कोईcacheKeyWillBeUsedप्लगिन कॉलबैक रजिस्टर नहीं किया गया है, तो पास किए गए अनुरोध को बिना किसी बदलाव के वापस कर दिया जाता हैgetCacheKeyफ़ंक्शन इस तरह दिखता है:(request: Request, mode: "read"
| "write"
) => {...}-
CANNOT TRANSLATE
अनुरोध
-
मोड
"read"
| "write"
-
returns
Promise<Request>
-
-
hasCallback
शून्य
अगर रणनीति में दिए गए कॉलबैक के साथ कम से कम एक प्लगिन है, तो यह फ़ंक्शन सही वैल्यू दिखाता है.
hasCallbackफ़ंक्शन इस तरह दिखता है:(name: C) => {...}
-
नाम
C
उस कॉलबैक का नाम जिसे ढूंढना है.
-
returns
बूलियन
-
-
iterateCallbacks
शून्य
यह कॉलबैक स्वीकार करता है और मैच करने वाले प्लगिन कॉलबैक का एक इटरेबल दिखाता है.इसमें हर कॉलबैक को मौजूदा हैंडलर की स्थिति के साथ रैप किया जाता है. इसका मतलब है कि जब हर कॉलबैक को कॉल किया जाता है, तो जो भी ऑब्जेक्ट पैरामीटर पास किया जाता है उसे प्लगिन की मौजूदा स्थिति के साथ मर्ज कर दिया जाता है.
iterateCallbacksफ़ंक्शन इस तरह दिखता है:(name: C) => {...}
-
नाम
C
कॉल बैक का नाम
-
returns
Generator<NonNullable<indexedAccess>anyunknown>
-
-
runCallbacks
शून्य
यह दिए गए नाम से मेल खाने वाले सभी प्लगिन कॉलबैक को क्रम से चलाता है. साथ ही, दिए गए पैरामीटर ऑब्जेक्ट (मौजूदा प्लगिन की स्थिति के साथ मर्ज किया गया) को सिर्फ़ एक आर्ग्युमेंट के तौर पर पास करता है.
ध्यान दें: यह तरीका सभी प्लगिन चलाता है. इसलिए, यह उन मामलों के लिए सही नहीं है जहां अगले कॉलबैक को कॉल करने से पहले, कॉलबैक की रिटर्न वैल्यू लागू करनी होती है. इस तरह की समस्या को ठीक करने का तरीका जानने के लिए, यहां
workbox-strategies.StrategyHandler#iterateCallbacksदेखें.runCallbacksफ़ंक्शन इस तरह दिखता है:(name: C, param: Omit<indexedAccess"state"
>) => {...}-
नाम
C
हर प्लगिन में चलाने के लिए कॉलबैक का नाम.
-
param
Omit<indexedAccess"state"
>यह वह ऑब्जेक्ट है जिसे हर कॉलबैक को लागू करते समय, पहले (और सिर्फ़) पैरामीटर के तौर पर पास किया जाता है. इस ऑब्जेक्ट को कॉलबैक के लागू होने से पहले, प्लगिन की मौजूदा स्थिति के साथ मर्ज कर दिया जाएगा.
-
returns
Promise<void>
-
-
waitUntil
शून्य
यह अनुरोध से जुड़े इवेंट के [extend lifetime promises]
https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promisesमें एक प्रॉमिस जोड़ता है. आम तौर पर, यहFetchEventहोता है.ध्यान दें: सभी वादे पूरे होने के बाद, आपको इसकी सूचना मिल सकती है. इसके लिए, await
workbox-strategies.StrategyHandler~doneWaitingका इस्तेमाल करें.waitUntilफ़ंक्शन इस तरह दिखता है:(promise: Promise<T>) => {...}
-
प्रॉमिस
Promise<T>
यह इवेंट की लाइफ़टाइम बढ़ाने का वादा है. यह उस इवेंट के लिए किया जाता है जिसने अनुरोध को ट्रिगर किया है.
-
returns
Promise<T>
-
StrategyOptions
प्रॉपर्टी
-
cacheName
string ज़रूरी नहीं है
-
fetchOptions
RequestInit ज़रूरी नहीं है
-
matchOptions
CacheQueryOptions ज़रूरी नहीं है
-
प्लगिन
WorkboxPlugin[] optional