ওয়ার্কবক্স-কৌশল

যখন পরিষেবা কর্মীদের প্রথম চালু করা হয়েছিল, তখন সাধারণ ক্যাশিং কৌশলগুলির একটি সেট আবির্ভূত হয়েছিল। একটি ক্যাশিং কৌশল হল একটি প্যাটার্ন যা নির্ধারণ করে যে কীভাবে একজন পরিষেবা কর্মী একটি ফেচ ইভেন্ট পাওয়ার পরে একটি প্রতিক্রিয়া তৈরি করে।

workbox-strategies সবচেয়ে সাধারণ ক্যাশিং কৌশলগুলি প্রদান করে তাই আপনার পরিষেবা কর্মীতে সেগুলি প্রয়োগ করা সহজ।

ওয়ার্কবক্স দ্বারা সমর্থিত কৌশলগুলির বাইরে আমরা খুব বেশি বিশদে যাব না, তবে আপনি অফলাইন কুকবুকে আরও শিখতে পারেন৷

কৌশল ব্যবহার

নিম্নলিখিত উদাহরণগুলিতে, আমরা আপনাকে দেখাব কিভাবে workbox-routing এর সাথে ওয়ার্কবক্স ক্যাশিং কৌশলগুলি ব্যবহার করতে হয়। এই ডকের কনফিগারিং কৌশল বিভাগে কভার করা প্রতিটি কৌশলের সাথে আপনি সংজ্ঞায়িত করতে পারেন এমন কিছু বিকল্প রয়েছে।

অ্যাডভান্সড ইউসেজ বিভাগে , আপনি কীভাবে 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());

ক্যাশে শুধুমাত্র

ক্যাশে শুধুমাত্র ডায়াগ্রাম

ক্যাশে শুধুমাত্র কৌশল নিশ্চিত করে যে একটি ক্যাশে থেকে প্রতিক্রিয়া পাওয়া যায়। এটি ওয়ার্কবক্সে কম সাধারণ, তবে আপনার নিজের প্রিক্যাচিং পদক্ষেপ থাকলে এটি কার্যকর হতে পারে।

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',
  })
);

প্লাগইন ব্যবহার করে

ওয়ার্কবক্স প্লাগইনগুলির একটি সেট সহ আসে যা এই কৌশলগুলির সাথে ব্যবহার করা যেতে পারে।

এই প্লাগইনগুলির যেকোনও (বা একটি কাস্টম প্লাগইন) ব্যবহার করতে, আপনাকে কেবলমাত্র 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-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);
  }
}

লক্ষ্য করুন কিভাবে handler.fetch() নেটিভ 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() প্রতিশ্রুতির সমাধান করে।

কাস্টম ক্যাশে নেটওয়ার্ক রেস কৌশল

নিম্নলিখিত উদাহরণটি অফলাইন কুকবুক (যা ওয়ার্কবক্স প্রদান করে না) থেকে ক্যাশে-নেটওয়ার্ক-রেসের উপর ভিত্তি করে তৈরি করা হয়েছে, তবে আরও এক ধাপ এগিয়ে একটি সফল নেটওয়ার্ক অনুরোধের পরে সর্বদা ক্যাশে আপডেট করে। এটি একটি আরও জটিল কৌশলের উদাহরণ যা একাধিক ক্রিয়া ব্যবহার করে।

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}));
  }
});

আপনি ওয়ার্কবক্স-কৌশল রেফারেন্স ডক্সে উপলব্ধ ক্লাসের তালিকা খুঁজে পেতে পারেন।

প্রকারভেদ

CacheFirst

একটি ক্যাশে-প্রথম অনুরোধ কৌশল বাস্তবায়ন।

একটি ক্যাশে ফার্স্ট স্ট্র্যাটেজি পরিমার্জিত সম্পদের জন্য উপযোগী, যেমন /styles/example.a8f5f1.css এর মতো ইউআরএল, যেহেতু সেগুলি দীর্ঘ সময়ের জন্য ক্যাশে করা যায়।

নেটওয়ার্ক অনুরোধ ব্যর্থ হলে, এবং কোন ক্যাশে মিল না থাকলে, এটি একটি WorkboxError ব্যতিক্রম নিক্ষেপ করবে।

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    কৌশলটির একটি নতুন উদাহরণ তৈরি করে এবং সমস্ত নথিভুক্ত বিকল্প বৈশিষ্ট্যগুলিকে পাবলিক ইনস্ট্যান্স বৈশিষ্ট্য হিসাবে সেট করে।

    দ্রষ্টব্য: যদি একটি কাস্টম কৌশল ক্লাস বেস স্ট্র্যাটেজি ক্লাস প্রসারিত করে এবং এই বৈশিষ্ট্যগুলির চেয়ে বেশি প্রয়োজন না হয়, তবে এটির নিজস্ব কনস্ট্রাক্টর সংজ্ঞায়িত করার প্রয়োজন নেই।

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (options?: StrategyOptions) => {...}

  • cacheName

    স্ট্রিং

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • _অপেক্ষা সম্পূর্ণ

    অকার্যকর

    _awaitComplete ফাংশনটি এরকম দেখাচ্ছে:

    (responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • প্রতিক্রিয়া সম্পন্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

    • অনুরোধ

      অনুরোধ

    • ঘটনা

      এক্সটেন্ডেবল ইভেন্ট

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • রেসপন্স পান

    অকার্যকর

    _getResponse ফাংশনটি এরকম দেখাচ্ছে:

    (handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • হ্যান্ডেল

    অকার্যকর

    একটি অনুরোধ কৌশল সম্পাদন করুন এবং একটি Promise প্রদান করুন যা একটি Response সাথে সমাধান করবে, সমস্ত প্রাসঙ্গিক প্লাগইন কলব্যাকগুলিকে আহ্বান করে৷

    যখন একটি কৌশল উদাহরণ ওয়ার্কবক্স workbox-routing.Route এর সাথে নিবন্ধিত হয়। রুটটি মেলে এই পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

    বিকল্পভাবে, এই পদ্ধতিটি event.respondWith() এ পাস করে একটি স্বতন্ত্র FetchEvent শ্রোতাদের মধ্যে ব্যবহার করা যেতে পারে।

    handle ফাংশন এর মত দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • সব হ্যান্ডেল

    অকার্যকর

    workbox-strategies.Strategy~handle মতই, কিন্তু শুধুমাত্র একটি Promise ফেরত দেওয়ার পরিবর্তে যা একটি Response প্রতিশ্রুতি দেয় এটি একটি [response, done] প্রতিশ্রুতি প্রদান করবে, যেখানে পূর্বের ( response ) handle() ফেরত দেওয়ার সমতুল্য। , এবং পরেরটি হল একটি প্রতিশ্রুতি যা কৌশলটি সম্পাদনের অংশ হিসাবে event.waitUntil() এ যোগ করা যেকোনো প্রতিশ্রুতি সম্পূর্ণ হয়ে গেলে সমাধান হবে।

    কৌশল দ্বারা সম্পাদিত অতিরিক্ত কাজ (সাধারণত ক্যাশিং প্রতিক্রিয়া) সফলভাবে সম্পন্ন হয় তা নিশ্চিত করার জন্য আপনি done প্রতিশ্রুতির জন্য অপেক্ষা করতে পারেন।

    handleAll ফাংশনটি এরকম দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      [প্রতিশ্রুতি<প্রতিক্রিয়া>, প্রতিশ্রুতি<void>]

      [প্রতিক্রিয়া, সম্পন্ন] প্রতিশ্রুতির একটি টুপল যা প্রতিক্রিয়া কখন সমাধান হয় এবং হ্যান্ডলার তার সমস্ত কাজ শেষ করে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।

CacheOnly

একটি ক্যাশে শুধুমাত্র অনুরোধ কৌশল একটি বাস্তবায়ন.

আপনি যদি কোন ওয়ার্কবক্স প্লাগইনগুলির সুবিধা নিতে চান তবে এই ক্লাসটি দরকারী৷

যদি কোন ক্যাশে মিল না থাকে, তাহলে এটি একটি WorkboxError ব্যতিক্রম নিক্ষেপ করবে।

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    কৌশলটির একটি নতুন উদাহরণ তৈরি করে এবং সমস্ত নথিভুক্ত বিকল্প বৈশিষ্ট্যগুলিকে পাবলিক ইনস্ট্যান্স বৈশিষ্ট্য হিসাবে সেট করে।

    দ্রষ্টব্য: যদি একটি কাস্টম কৌশল ক্লাস বেস স্ট্র্যাটেজি ক্লাস প্রসারিত করে এবং এই বৈশিষ্ট্যগুলির চেয়ে বেশি প্রয়োজন না হয়, তবে এটির নিজস্ব কনস্ট্রাক্টর সংজ্ঞায়িত করার প্রয়োজন নেই।

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (options?: StrategyOptions) => {...}

  • cacheName

    স্ট্রিং

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • _অপেক্ষা সম্পূর্ণ

    অকার্যকর

    _awaitComplete ফাংশনটি এরকম দেখাচ্ছে:

    (responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • প্রতিক্রিয়া সম্পন্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

    • অনুরোধ

      অনুরোধ

    • ঘটনা

      এক্সটেন্ডেবল ইভেন্ট

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • রেসপন্স পান

    অকার্যকর

    _getResponse ফাংশনটি এরকম দেখাচ্ছে:

    (handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • হ্যান্ডেল

    অকার্যকর

    একটি অনুরোধ কৌশল সম্পাদন করুন এবং একটি Promise প্রদান করুন যা একটি Response সাথে সমাধান করবে, সমস্ত প্রাসঙ্গিক প্লাগইন কলব্যাকগুলিকে আহ্বান করে৷

    যখন একটি কৌশল উদাহরণ ওয়ার্কবক্স workbox-routing.Route এর সাথে নিবন্ধিত হয়। রুটটি মেলে এই পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

    বিকল্পভাবে, এই পদ্ধতিটি event.respondWith() এ পাস করে একটি স্বতন্ত্র FetchEvent শ্রোতাদের মধ্যে ব্যবহার করা যেতে পারে।

    handle ফাংশন এর মত দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • সব হ্যান্ডেল

    অকার্যকর

    workbox-strategies.Strategy~handle মতই, কিন্তু শুধুমাত্র একটি Promise ফেরত দেওয়ার পরিবর্তে যা একটি Response প্রতিশ্রুতি দেয় এটি একটি [response, done] প্রতিশ্রুতি প্রদান করবে, যেখানে পূর্বের ( response ) handle() ফেরত দেওয়ার সমতুল্য। , এবং পরেরটি হল একটি প্রতিশ্রুতি যা কৌশলটি সম্পাদনের অংশ হিসাবে event.waitUntil() এ যোগ করা যেকোনো প্রতিশ্রুতি সম্পূর্ণ হয়ে গেলে সমাধান হবে।

    কৌশল দ্বারা সম্পাদিত অতিরিক্ত কাজ (সাধারণত ক্যাশিং প্রতিক্রিয়া) সফলভাবে সম্পন্ন হয় তা নিশ্চিত করার জন্য আপনি done প্রতিশ্রুতির জন্য অপেক্ষা করতে পারেন।

    handleAll ফাংশনটি এরকম দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      [প্রতিশ্রুতি<প্রতিক্রিয়া>, প্রতিশ্রুতি<void>]

      [প্রতিক্রিয়া, সম্পন্ন] প্রতিশ্রুতির একটি টুপল যা প্রতিক্রিয়া কখন সমাধান হয় এবং হ্যান্ডলার তার সমস্ত কাজ শেষ করে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।

NetworkFirst

একটি নেটওয়ার্ক প্রথম অনুরোধ কৌশল একটি বাস্তবায়ন.

ডিফল্টরূপে, এই কৌশলটি একটি 200 স্ট্যাটাস কোডের পাশাপাশি অস্বচ্ছ প্রতিক্রিয়া সহ প্রতিক্রিয়াগুলি ক্যাশে করবে৷ অস্বচ্ছ প্রতিক্রিয়াগুলি হল ক্রস-অরিজিন অনুরোধ যেখানে প্রতিক্রিয়া CORS সমর্থন করে না।

নেটওয়ার্ক অনুরোধ ব্যর্থ হলে, এবং কোন ক্যাশে মিল না থাকলে, এটি একটি WorkboxError ব্যতিক্রম নিক্ষেপ করবে।

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (options?: NetworkFirstOptions) => {...}

  • cacheName

    স্ট্রিং

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • _অপেক্ষা সম্পূর্ণ

    অকার্যকর

    _awaitComplete ফাংশনটি এরকম দেখাচ্ছে:

    (responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • প্রতিক্রিয়া সম্পন্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

    • অনুরোধ

      অনুরোধ

    • ঘটনা

      এক্সটেন্ডেবল ইভেন্ট

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • রেসপন্স পান

    অকার্যকর

    _getResponse ফাংশনটি এরকম দেখাচ্ছে:

    (handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • হ্যান্ডেল

    অকার্যকর

    একটি অনুরোধ কৌশল সম্পাদন করুন এবং একটি Promise প্রদান করুন যা একটি Response সাথে সমাধান করবে, সমস্ত প্রাসঙ্গিক প্লাগইন কলব্যাকগুলিকে আহ্বান করে৷

    যখন একটি কৌশল উদাহরণ ওয়ার্কবক্স workbox-routing.Route এর সাথে নিবন্ধিত হয়। রুটটি মেলে এই পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

    বিকল্পভাবে, এই পদ্ধতিটি event.respondWith() এ পাস করে একটি স্বতন্ত্র FetchEvent শ্রোতাদের মধ্যে ব্যবহার করা যেতে পারে।

    handle ফাংশন এর মত দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • সব হ্যান্ডেল

    অকার্যকর

    workbox-strategies.Strategy~handle মতই, কিন্তু শুধুমাত্র একটি Promise ফেরত দেওয়ার পরিবর্তে যা একটি Response প্রতিশ্রুতি দেয় এটি একটি [response, done] প্রতিশ্রুতি প্রদান করবে, যেখানে পূর্বের ( response ) handle() ফেরত দেওয়ার সমতুল্য। , এবং পরেরটি হল একটি প্রতিশ্রুতি যা কৌশলটি সম্পাদনের অংশ হিসাবে event.waitUntil() এ যোগ করা যেকোনো প্রতিশ্রুতি সম্পূর্ণ হয়ে গেলে সমাধান হবে।

    কৌশল দ্বারা সম্পাদিত অতিরিক্ত কাজ (সাধারণত ক্যাশিং প্রতিক্রিয়া) সফলভাবে সম্পন্ন হয় তা নিশ্চিত করার জন্য আপনি done প্রতিশ্রুতির জন্য অপেক্ষা করতে পারেন।

    handleAll ফাংশনটি এরকম দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      [প্রতিশ্রুতি<প্রতিক্রিয়া>, প্রতিশ্রুতি<void>]

      [প্রতিক্রিয়া, সম্পন্ন] প্রতিশ্রুতির একটি টুপল যা প্রতিক্রিয়া কখন সমাধান হয় এবং হ্যান্ডলার তার সমস্ত কাজ শেষ করে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।

NetworkFirstOptions

বৈশিষ্ট্য

  • cacheName

    স্ট্রিং ঐচ্ছিক

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • নেটওয়ার্ক টাইমআউট সেকেন্ড

    সংখ্যা ঐচ্ছিক

  • প্লাগইন

    WorkboxPlugin [] ঐচ্ছিক

NetworkOnly

একটি নেটওয়ার্ক-শুধু অনুরোধ কৌশল বাস্তবায়ন।

আপনি যদি কোন ওয়ার্কবক্স প্লাগইনগুলির সুবিধা নিতে চান তবে এই ক্লাসটি দরকারী৷

নেটওয়ার্ক অনুরোধ ব্যর্থ হলে, এটি একটি WorkboxError ব্যতিক্রম নিক্ষেপ করবে।

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (options?: NetworkOnlyOptions) => {...}

  • cacheName

    স্ট্রিং

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • _অপেক্ষা সম্পূর্ণ

    অকার্যকর

    _awaitComplete ফাংশনটি এরকম দেখাচ্ছে:

    (responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • প্রতিক্রিয়া সম্পন্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

    • অনুরোধ

      অনুরোধ

    • ঘটনা

      এক্সটেন্ডেবল ইভেন্ট

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • রেসপন্স পান

    অকার্যকর

    _getResponse ফাংশনটি এরকম দেখাচ্ছে:

    (handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • হ্যান্ডেল

    অকার্যকর

    একটি অনুরোধ কৌশল সম্পাদন করুন এবং একটি Promise প্রদান করুন যা একটি Response সাথে সমাধান করবে, সমস্ত প্রাসঙ্গিক প্লাগইন কলব্যাকগুলিকে আহ্বান করে৷

    যখন একটি কৌশল উদাহরণ ওয়ার্কবক্স workbox-routing.Route এর সাথে নিবন্ধিত হয়। রুটটি মেলে এই পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

    বিকল্পভাবে, এই পদ্ধতিটি event.respondWith() এ পাস করে একটি স্বতন্ত্র FetchEvent শ্রোতাদের মধ্যে ব্যবহার করা যেতে পারে।

    handle ফাংশন এর মত দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • সব হ্যান্ডেল

    অকার্যকর

    workbox-strategies.Strategy~handle মতই, কিন্তু শুধুমাত্র একটি Promise ফেরত দেওয়ার পরিবর্তে যা একটি Response প্রতিশ্রুতি দেয় এটি একটি [response, done] প্রতিশ্রুতি প্রদান করবে, যেখানে পূর্বের ( response ) handle() ফেরত দেওয়ার সমতুল্য। , এবং পরেরটি হল একটি প্রতিশ্রুতি যা কৌশলটি সম্পাদনের অংশ হিসাবে event.waitUntil() এ যোগ করা যেকোনো প্রতিশ্রুতি সম্পূর্ণ হয়ে গেলে সমাধান হবে।

    কৌশল দ্বারা সম্পাদিত অতিরিক্ত কাজ (সাধারণত ক্যাশিং প্রতিক্রিয়া) সফলভাবে সম্পন্ন হয় তা নিশ্চিত করার জন্য আপনি done প্রতিশ্রুতির জন্য অপেক্ষা করতে পারেন।

    handleAll ফাংশনটি এরকম দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      [প্রতিশ্রুতি<প্রতিক্রিয়া>, প্রতিশ্রুতি<void>]

      [প্রতিক্রিয়া, সম্পন্ন] প্রতিশ্রুতির একটি টুপল যা প্রতিক্রিয়া কখন সমাধান হয় এবং হ্যান্ডলার তার সমস্ত কাজ শেষ করে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।

NetworkOnlyOptions

বৈশিষ্ট্য

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • নেটওয়ার্ক টাইমআউট সেকেন্ড

    সংখ্যা ঐচ্ছিক

  • প্লাগইন

    WorkboxPlugin [] ঐচ্ছিক

StaleWhileRevalidate

একটি বাসি-যখন-পুনঃপ্রমাণ অনুরোধ কৌশলের বাস্তবায়ন।

সমান্তরালভাবে ক্যাশে এবং নেটওয়ার্ক উভয় থেকে সম্পদের অনুরোধ করা হয়। কৌশলটি উপলব্ধ হলে ক্যাশে করা সংস্করণের সাথে প্রতিক্রিয়া জানাবে, অন্যথায় নেটওয়ার্ক প্রতিক্রিয়ার জন্য অপেক্ষা করুন৷ প্রতিটি সফল অনুরোধের সাথে নেটওয়ার্ক প্রতিক্রিয়া সহ ক্যাশে আপডেট করা হয়।

ডিফল্টরূপে, এই কৌশলটি একটি 200 স্ট্যাটাস কোডের পাশাপাশি অস্বচ্ছ প্রতিক্রিয়া সহ প্রতিক্রিয়াগুলি ক্যাশে করবে৷ অস্বচ্ছ প্রতিক্রিয়া হল ক্রস-অরিজিন অনুরোধ যেখানে প্রতিক্রিয়া CORS সমর্থন করে না।

নেটওয়ার্ক অনুরোধ ব্যর্থ হলে, এবং কোন ক্যাশে মিল না থাকলে, এটি একটি WorkboxError ব্যতিক্রম নিক্ষেপ করবে।

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (options?: StrategyOptions) => {...}

  • cacheName

    স্ট্রিং

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • _অপেক্ষা সম্পূর্ণ

    অকার্যকর

    _awaitComplete ফাংশনটি এরকম দেখাচ্ছে:

    (responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • প্রতিক্রিয়া সম্পন্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

    • অনুরোধ

      অনুরোধ

    • ঘটনা

      এক্সটেন্ডেবল ইভেন্ট

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • রেসপন্স পান

    অকার্যকর

    _getResponse ফাংশনটি এরকম দেখাচ্ছে:

    (handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • হ্যান্ডেল

    অকার্যকর

    একটি অনুরোধ কৌশল সম্পাদন করুন এবং একটি Promise প্রদান করুন যা একটি Response সাথে সমাধান করবে, সমস্ত প্রাসঙ্গিক প্লাগইন কলব্যাকগুলিকে আহ্বান করে৷

    যখন একটি কৌশল উদাহরণ ওয়ার্কবক্স workbox-routing.Route এর সাথে নিবন্ধিত হয়। রুটটি মেলে এই পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

    বিকল্পভাবে, এই পদ্ধতিটি event.respondWith() এ পাস করে একটি স্বতন্ত্র FetchEvent শ্রোতাদের মধ্যে ব্যবহার করা যেতে পারে।

    handle ফাংশন এর মত দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • সব হ্যান্ডেল

    অকার্যকর

    workbox-strategies.Strategy~handle মতই, কিন্তু শুধুমাত্র একটি Promise ফেরত দেওয়ার পরিবর্তে যা একটি Response প্রতিশ্রুতি দেয় এটি একটি [response, done] প্রতিশ্রুতি প্রদান করবে, যেখানে পূর্বের ( response ) handle() ফেরত দেওয়ার সমতুল্য। , এবং পরেরটি হল একটি প্রতিশ্রুতি যা কৌশলটি সম্পাদনের অংশ হিসাবে event.waitUntil() এ যোগ করা যেকোনো প্রতিশ্রুতি সম্পূর্ণ হয়ে গেলে সমাধান হবে।

    কৌশল দ্বারা সম্পাদিত অতিরিক্ত কাজ (সাধারণত ক্যাশিং প্রতিক্রিয়া) সফলভাবে সম্পন্ন হয় তা নিশ্চিত করার জন্য আপনি done প্রতিশ্রুতির জন্য অপেক্ষা করতে পারেন।

    handleAll ফাংশনটি এরকম দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      [প্রতিশ্রুতি<প্রতিক্রিয়া>, প্রতিশ্রুতি<void>]

      [প্রতিক্রিয়া, সম্পন্ন] প্রতিশ্রুতির একটি টুপল যা প্রতিক্রিয়া কখন সমাধান হয় এবং হ্যান্ডলার তার সমস্ত কাজ শেষ করে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।

Strategy

একটি বিমূর্ত বেস ক্লাস যা অন্যান্য সমস্ত কৌশল ক্লাস থেকে প্রসারিত করা আবশ্যক:

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    কৌশলটির একটি নতুন উদাহরণ তৈরি করে এবং সমস্ত নথিভুক্ত বিকল্প বৈশিষ্ট্যগুলিকে পাবলিক ইনস্ট্যান্স বৈশিষ্ট্য হিসাবে সেট করে।

    দ্রষ্টব্য: যদি একটি কাস্টম কৌশল ক্লাস বেস স্ট্র্যাটেজি ক্লাস প্রসারিত করে এবং এই বৈশিষ্ট্যগুলির চেয়ে বেশি প্রয়োজন না হয়, তবে এটির নিজস্ব কনস্ট্রাক্টর সংজ্ঞায়িত করার প্রয়োজন নেই।

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (options?: StrategyOptions) => {...}

  • cacheName

    স্ট্রিং

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • _অপেক্ষা সম্পূর্ণ

    অকার্যকর

    _awaitComplete ফাংশনটি এরকম দেখাচ্ছে:

    (responseDone: Promise<Response>, handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • প্রতিক্রিয়া সম্পন্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

    • অনুরোধ

      অনুরোধ

    • ঘটনা

      এক্সটেন্ডেবল ইভেন্ট

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • রেসপন্স পান

    অকার্যকর

    _getResponse ফাংশনটি এরকম দেখাচ্ছে:

    (handler: StrategyHandler, request: Request, event: ExtendableEvent) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • _হ্যান্ডেল

    অকার্যকর

    _handle ফাংশনটি এরকম দেখাচ্ছে:

    (request: Request, handler: StrategyHandler) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • হ্যান্ডেল

    অকার্যকর

    একটি অনুরোধ কৌশল সম্পাদন করুন এবং একটি Promise প্রদান করুন যা একটি Response সাথে সমাধান করবে, সমস্ত প্রাসঙ্গিক প্লাগইন কলব্যাকগুলিকে আহ্বান করে৷

    যখন একটি কৌশল উদাহরণ ওয়ার্কবক্স workbox-routing.Route এর সাথে নিবন্ধিত হয়। রুটটি মেলে এই পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হয়।

    বিকল্পভাবে, এই পদ্ধতিটি event.respondWith() এ পাস করে একটি স্বতন্ত্র FetchEvent শ্রোতাদের মধ্যে ব্যবহার করা যেতে পারে।

    handle ফাংশন এর মত দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • সব হ্যান্ডেল

    অকার্যকর

    workbox-strategies.Strategy~handle মতই, কিন্তু শুধুমাত্র একটি Promise ফেরত দেওয়ার পরিবর্তে যা একটি Response প্রতিশ্রুতি দেয় এটি একটি [response, done] প্রতিশ্রুতি প্রদান করবে, যেখানে পূর্বের ( response ) handle() ফেরত দেওয়ার সমতুল্য। , এবং পরেরটি হল একটি প্রতিশ্রুতি যা কৌশলটি সম্পাদনের অংশ হিসাবে event.waitUntil() এ যোগ করা যেকোনো প্রতিশ্রুতি সম্পূর্ণ হয়ে গেলে সমাধান হবে।

    কৌশল দ্বারা সম্পাদিত অতিরিক্ত কাজ (সাধারণত ক্যাশিং প্রতিক্রিয়া) সফলভাবে সম্পন্ন হয় তা নিশ্চিত করার জন্য আপনি done প্রতিশ্রুতির জন্য অপেক্ষা করতে পারেন।

    handleAll ফাংশনটি এরকম দেখাচ্ছে:

    (options: FetchEvent | HandlerCallbackOptions) => {...}

    • রিটার্ন

      [প্রতিশ্রুতি<প্রতিক্রিয়া>, প্রতিশ্রুতি<void>]

      [প্রতিক্রিয়া, সম্পন্ন] প্রতিশ্রুতির একটি টুপল যা প্রতিক্রিয়া কখন সমাধান হয় এবং হ্যান্ডলার তার সমস্ত কাজ শেষ করে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।

StrategyHandler

একটি ক্লাস তৈরি করা হয়েছে যখন একটি স্ট্র্যাটেজি ইন্সট্যান্স কল করে workbox-strategies.Strategy~handle বা workbox-strategies.Strategy~handleAll যা প্লাগইন কলব্যাকের চারপাশে সমস্ত ফেচ এবং ক্যাশে অ্যাকশনগুলিকে মোড়কে রাখে এবং কৌশলটি কখন "সম্পন্ন" হয় তা ট্র্যাক রাখে (অর্থাৎ সব যোগ করা হয়েছে) event.waitUntil() প্রতিশ্রুতি সমাধান হয়েছে)।

বৈশিষ্ট্য

  • নির্মাণকারী

    অকার্যকর

    পাস করা কৌশল এবং ইভেন্টের সাথে যুক্ত একটি নতুন উদাহরণ তৈরি করে যা অনুরোধটি পরিচালনা করছে।

    কনস্ট্রাক্টর সেই অবস্থাকেও সূচনা করে যা এই অনুরোধটি পরিচালনাকারী প্রতিটি প্লাগইনকে পাস করা হবে।

    constructor ফাংশনটি এর মত দেখাচ্ছে:

    (strategy: Strategy, options: HandlerCallbackOptions) => {...}

  • ঘটনা

    এক্সটেন্ডেবল ইভেন্ট

  • params

    যে কোন ঐচ্ছিক

  • অনুরোধ

    অনুরোধ

  • url

    ইউআরএল ঐচ্ছিক

  • cacheMatch

    অকার্যকর

    কৌশল অবজেক্টে সংজ্ঞায়িত cacheName , matchOptions , এবং plugins ব্যবহার করে ক্যাশে থেকে একটি অনুরোধ মেলে (এবং যে কোনও প্রযোজ্য প্লাগইন কলব্যাক পদ্ধতি ব্যবহার করে)।

    এই পদ্ধতিটি ব্যবহার করার সময় নিম্নলিখিত প্লাগইন লাইফসাইকেল পদ্ধতিগুলি আহ্বান করা হয়:

    • cacheKeyWillByUsed()
    • cachedResponseWillByUsed()

    cacheMatch ফাংশন এর মত দেখাচ্ছে:

    (key: RequestInfo) => {...}

    • চাবি

      তথ্যের অনুরোধ করুন

      ক্যাশে কী হিসাবে ব্যবহার করার অনুরোধ বা URL।

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

      একটি মিল প্রতিক্রিয়া, যদি পাওয়া যায়.

  • ক্যাশেপুট

    অকার্যকর

    কৌশল অবজেক্টে সংজ্ঞায়িত cacheName এবং plugins ব্যবহার করে ক্যাশে একটি অনুরোধ/প্রতিক্রিয়া জোড়া রাখে (এবং যে কোনও প্রযোজ্য প্লাগইন কলব্যাক পদ্ধতি ব্যবহার করে)।

    এই পদ্ধতিটি ব্যবহার করার সময় নিম্নলিখিত প্লাগইন লাইফসাইকেল পদ্ধতিগুলি আহ্বান করা হয়:

    • cacheKeyWillByUsed()
    • cacheWillUpdate()
    • cacheDidUpdate()

    cachePut ফাংশন এর মত দেখাচ্ছে:

    (key: RequestInfo, response: Response) => {...}

    • চাবি

      তথ্যের অনুরোধ করুন

      ক্যাশে কী হিসাবে ব্যবহার করার অনুরোধ বা URL।

    • প্রতিক্রিয়া

      প্রতিক্রিয়া

      ক্যাশে প্রতিক্রিয়া.

    • রিটার্ন

      প্রতিশ্রুতি<বুলিয়ান>

      false যদি একটি cacheWillUpdate দ্বারা প্রতিক্রিয়া ক্যাশে করা না হয়, এবং অন্যথায় true

  • ধ্বংস

    অকার্যকর

    কৌশলটি চালানো বন্ধ করে এবং অবিলম্বে কোনো মুলতুবি waitUntil() প্রতিশ্রুতির সমাধান করে।

    destroy ফাংশন এর মত দেখায়:

    () => {...}

  • সম্পন্ন প্রতীক্ষা

    অকার্যকর

    একটি প্রতিশ্রুতি প্রদান করে যা workbox-strategies.StrategyHandler~waitUntil পাস করা সমস্ত প্রতিশ্রুতি একবার সমাধান করে৷

    দ্রষ্টব্য: doneWaiting() নিষ্পত্তি হওয়ার পরে ম্যানুয়ালি একটি ইভেন্টের waitUntil() পদ্ধতিতে প্রেরণ করা উচিত (এই হ্যান্ডলারের waitUntil() পদ্ধতি নয়), অন্যথায় আপনার কাজ শেষ হওয়ার আগে পরিষেবা কর্মী থ্রেড আমার হত্যা করা হবে।

    doneWaiting ফাংশনটি এর মত দেখাচ্ছে:

    () => {...}

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • আনা

    অকার্যকর

    fetchOptions (নন-নেভিগেশন অনুরোধের জন্য) এবং Strategy অবজেক্টে সংজ্ঞায়িত plugins ব্যবহার করে একটি প্রদত্ত অনুরোধ (এবং যেকোন প্রযোজ্য প্লাগইন কলব্যাক পদ্ধতির আহ্বান) নিয়ে আসে।

    এই পদ্ধতিটি ব্যবহার করার সময় নিম্নলিখিত প্লাগইন লাইফসাইকেল পদ্ধতিগুলি আহ্বান করা হয়:

    • requestWillFetch()
    • fetchDidSucceed()
    • fetchDidFail()

    fetch ফাংশন এর মত দেখাচ্ছে:

    (input: RequestInfo) => {...}

    • ইনপুট

      তথ্যের অনুরোধ করুন

      URL বা আনার অনুরোধ৷

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • fetchAndCachePut

    অকার্যকর

    this.fetch() কে কল করে এবং (পটভূমিতে) this.fetch() দ্বারা উত্পন্ন প্রতিক্রিয়ার উপর this.cachePut() চালায়।

    this.cachePut() এ কলটি স্বয়ংক্রিয়ভাবে this.waitUntil() আহ্বান করে, তাই ইভেন্টে আপনাকে ম্যানুয়ালি waitUntil() কল করতে হবে না।

    fetchAndCachePut ফাংশনটি এরকম দেখাচ্ছে:

    (input: RequestInfo) => {...}

    • ইনপুট

      তথ্যের অনুরোধ করুন

      আনয়ন এবং ক্যাশে করার অনুরোধ বা URL।

    • রিটার্ন

      প্রতিশ্রুতি <প্রতিক্রিয়া>

  • getCacheKey

    অকার্যকর

    cacheKeyWillBeUsed কলব্যাকের জন্য প্লাগইনগুলির তালিকা চেক করে, এবং ক্রমানুসারে পাওয়া সেই কলব্যাকগুলির যেকোনও কার্যকর করে৷ শেষ প্লাগইন দ্বারা প্রত্যাবর্তিত চূড়ান্ত Request বস্তুটি ক্যাশে পড়ার এবং/বা লেখার জন্য ক্যাশে কী হিসাবে বিবেচিত হয়। যদি কোনো cacheKeyWillBeUsed প্লাগইন কলব্যাক নিবন্ধিত না হয়, পাস করা অনুরোধ অপরিবর্তিত ফেরত দেওয়া হয়

    getCacheKey ফাংশন এর মত দেখাচ্ছে:

    (request: Request, mode: "read" 
     | "write"
    ) => {...}

    • অনুরোধ

      অনুরোধ

    • মোড

      "পড়ুন"
      | "লিখুন"

    • রিটার্ন

      প্রতিশ্রুতি <অনুরোধ>

  • কলব্যাক আছে

    অকার্যকর

    প্রদত্ত কলব্যাকের সাথে কৌশলটিতে কমপক্ষে একটি প্লাগইন থাকলে সত্য ফেরত দেয়।

    hasCallback ফাংশন এর মত দেখাচ্ছে:

    (name: C) => {...}

    • নাম

      চেক করার জন্য কলব্যাকের নাম।

    • রিটার্ন

      বুলিয়ান

  • পুনরাবৃত্তি কলব্যাক

    অকার্যকর

    একটি কলব্যাক গ্রহণ করে এবং প্লাগইন কলব্যাকগুলির সাথে মিলে যাওয়া একটি পুনরাবৃত্তিযোগ্য ফেরত দেয়, যেখানে প্রতিটি কলব্যাক বর্তমান হ্যান্ডলার অবস্থার সাথে মোড়ানো থাকে (অর্থাৎ আপনি যখন প্রতিটি কলব্যাক কল করেন, আপনি যে বস্তুর প্যারামিটারটি পাস করেন তা প্লাগইনটির বর্তমান অবস্থার সাথে একত্রিত হবে)।

    iterateCallbacks ফাংশন এর মত দেখাচ্ছে:

    (name: C) => {...}

    • নাম

      কলব্যাক চালানোর জন্য নাম

    • রিটার্ন

      জেনারেটর<NonNullable<indexedAccess>অজানা>

  • কলব্যাক চালান

    অকার্যকর

    প্রদত্ত নামের সাথে মিলে যাওয়া সমস্ত প্লাগইন কলব্যাক চালায়, ক্রমানুসারে, প্রদত্ত প্যারাম অবজেক্টকে (বর্তমান প্লাগইন অবস্থার সাথে একত্রিত করা) একমাত্র আর্গুমেন্ট হিসেবে।

    দ্রষ্টব্য: যেহেতু এই পদ্ধতিটি সমস্ত প্লাগইন চালায়, এটি সেই ক্ষেত্রে উপযুক্ত নয় যেখানে পরবর্তী কলব্যাকে কল করার আগে একটি কলব্যাকের রিটার্ন মান প্রয়োগ করতে হবে৷ কিভাবে সেই কেসটি পরিচালনা করতে হয় তার জন্য নিচে workbox-strategies.StrategyHandler#iterateCallbacks দেখুন।

    runCallbacks ফাংশনটি দেখতে এরকম দেখাচ্ছে:

    (name: C, param: Omit<indexedAccess"state" 
    >) => {...}

    • নাম

      প্রতিটি প্লাগইনের মধ্যে চালানোর জন্য কলব্যাকের নাম।

    • পরম

      বাদ দিন<indexedAccess "state"
      >

      প্রতিটি কলব্যাক চালানোর সময় প্রথম (এবং শুধুমাত্র) প্যারাম হিসেবে যে বস্তুটি পাস করতে হবে। কলব্যাক সম্পাদনের আগে এই বস্তুটি বর্তমান প্লাগইন অবস্থার সাথে একত্রিত হবে।

    • রিটার্ন

      প্রতিশ্রুতি <void>

  • পর্যন্ত অপেক্ষা করুন

    অকার্যকর

    অনুরোধটি পরিচালনা করার সাথে যুক্ত ইভেন্ট ইভেন্টের https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises (সাধারণত একটি FetchEvent ) একটি প্রতিশ্রুতি যোগ করে।

    দ্রষ্টব্য: আপনি workbox-strategies.StrategyHandler~doneWaiting

    waitUntil ফাংশনটি এরকম দেখাচ্ছে:

    (promise: Promise<T>) => {...}

    • প্রতিশ্রুতি

      প্রতিশ্রুতি<T>

      অনুরোধটি ট্রিগার করে এমন ইভেন্টের বর্ধিত জীবনকালের প্রতিশ্রুতি যোগ করার প্রতিশ্রুতি।

    • রিটার্ন

      প্রতিশ্রুতি<T>

StrategyOptions

বৈশিষ্ট্য

  • cacheName

    স্ট্রিং ঐচ্ছিক

  • ফেচ অপশন

    RequestInit ঐচ্ছিক

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • প্লাগইন

    WorkboxPlugin [] ঐচ্ছিক