वर्कबॉक्स बनाने की रणनीतियां

जब पहली बार सर्विस वर्कर लॉन्च किए गए थे, तब कैश मेमोरी में सेव करने की कुछ सामान्य रणनीतियां सामने आई थीं. कैशिंग की रणनीति एक ऐसा पैटर्न है जो यह तय करता है कि फ़ेच इवेंट मिलने के बाद, सर्विस वर्कर कैसे रिस्पॉन्स जनरेट करता है.

workbox-strategies, कैश मेमोरी में सेव करने की सबसे आम रणनीतियां उपलब्ध कराता है. इसलिए, इन्हें अपने सर्विस वर्कर में लागू करना आसान होता है.

हम Workbox के साथ काम करने वाली रणनीतियों के अलावा, ज़्यादा जानकारी नहीं देंगे. हालांकि, ऑफ़लाइन कुकबुक में ज़्यादा जानें.

रणनीतियों का इस्तेमाल करना

यहां दिए गए उदाहरणों में, हम आपको workbox-routing के साथ Workbox की कैश मेमोरी में सेव करने की रणनीतियों का इस्तेमाल करने का तरीका बताएंगे. हर रणनीति के लिए कुछ विकल्प तय किए जा सकते हैं. इनके बारे में इस दस्तावेज़ के 'रणनीतियां कॉन्फ़िगर करना' सेक्शन में बताया गया है.

ऐडवांस इस्तेमाल वाले सेक्शन में, हम आपको बताएंगे कि workbox-routing के बिना, सीधे तौर पर कैश मेमोरी में सेव करने की रणनीतियों का इस्तेमाल कैसे किया जा सकता है.

Stale-While-Revalidate

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 में प्लगिन का एक सेट होता है. इनका इस्तेमाल इन रणनीतियों के साथ किया जा सकता है.

इनमें से किसी भी प्लगिन (या कस्टम प्लगिन) का इस्तेमाल करने के लिए, आपको सिर्फ़ 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 ज़रूरी नहीं है

  • 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 ज़रूरी नहीं है

  • 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) => {...}

  • 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) => {...}

  • 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 ज़रूरी नहीं है

  • 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 ज़रूरी नहीं है

  • 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) => {...}

    • 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) => {...}

  • इवेंट

    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