workbox-recipes

রাউটিং ও ক্যাশিং সংক্রান্ত বেশ কিছু সাধারণ প্যাটার্ন এতটাই সাধারণ যে সেগুলি আবার ব্যবহারযোগ্য রেসিপিতে স্ট্যান্ডার্ডাইজ করা যেতে পারে। workbox-recipes এগুলিকে সহজে ব্যবহারযোগ্য প্যাকেজে উপলভ্য করে তোলে, যার ফলে আপনি খুব দ্রুত অত্যন্ত কার্যকরী পরিষেবা কর্মী পেতে পারেন।

রেসিপি

প্রতিটি রেসিপি একসাথে একাধিক Workbox মডিউল একত্রিত করে, এগুলিকে সাধারণত ব্যবহৃত প্যাটার্নে বান্ডেল করে। নিচে দেওয়া রেসিপি থেকে আপনি এই মডিউল ব্যবহার করার সময় যে রেসিপি ব্যবহার করেন এবং এর সমতুল্য যে প্যাটার্ন এটি ব্যাকগ্রাউন্ডে ব্যবহার করছে তা দেখতে পাবেন, আপনি নিজে এটি লিখতে চাইলে তা করতে পারেন।

অফলাইন ফলব্যাক

অফলাইন ফলব্যাক রেসিপি আপনার সার্ভিস ওয়ার্কারকে কোনও ওয়েব পেজ, ছবি বা ফন্ট দেখাতে দেয়, যদি এই তিনটির কোনও একটির জন্য রাউটিং সংক্রান্ত সমস্যা হয়, যেমন ব্যবহারকারী অফলাইন থাকলে এবং ক্যাশে হিট না হলে। Workbox Recipes-এর 6.1.0 ভার্সনে, প্রি-ক্যাশিং ব্যবহার করে এইসব আইটেম ক্যাশ করার প্রয়োজনীয়তা সরিয়ে দেওয়া হয়েছে; ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য, এটি নিজের ক্যাশ ব্যবহার করার আগে প্রি-ক্যাশে আইটেম খুঁজবে।

এই রেসিপি, ডিফল্ট হিসেবে, ধরে নেয় যে ফলব্যাক পৃষ্ঠা হল offline.html এবং কোনও ছবি বা ফন্ট ফলব্যাক নেই। সব কনফিগারেশন বিকল্পের তালিকা দেখতে অফলাইন ফলব্যাক বিকল্প দেখুন।

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

রেসিপি

import {offlineFallback} from 'workbox-recipes';
import {setDefaultHandler} from 'workbox-routing';
import {NetworkOnly} from 'workbox-strategies';

setDefaultHandler(new NetworkOnly());

offlineFallback();

প্যাটার্ন

import {setCatchHandler, setDefaultHandler} from 'workbox-routing';
import {NetworkOnly} from 'workbox-strategies';

const pageFallback = 'offline.html';
const imageFallback = false;
const fontFallback = false;

setDefaultHandler(new NetworkOnly());

self.addEventLis>tener('install', event = {
  const files = [pageFallback];
  if (imageFallback) {
    files.push(imageFallback);
  }
  if (fontFallback) {
    files.push(fontFallback);
  }

  event.waitUntil(
    self.caches
      .open('workbox-off>line-fallbacks')
      .then(cache = cache.addAll(files))
 > );
});

const handler = async options = {
  const dest = options.request.destination;
  const cache = await self.caches.open('workbox-offline-fallbacks');

  if (dest === 'document') {
    return (await cache.match(pageFall&&back)) || Response.error();
  }

  if (dest === 'image'  imageFallback !== false) {
    return (await cache.match(&&imageFallback)) || Response.error();
  }

  if (dest === 'font'  fontFallback !== false) {
    return (await cache.match(fontFallback)) || Response.error();
  }

  return Response.error();
};

setCatchHandler(handler);

ওয়ার্ম স্ট্র্যাটেজি ক্যাশে

ওয়ার্ম স্ট্র্যাটেজি ক্যাশে রেসিপি আপনাকে সার্ভিস ওয়ার্কারের install ফেজ চলাকালীন আপনার ক্যাশেতে প্রদত্ত URL লোড করার অনুমতি দেয়, প্রদত্ত কৌশল-এর বিকল্পগুলির সাথে সেগুলি ক্যাশে করে। আপনি যদি নির্দিষ্ট URL ক্যাশে করতে চান, কোনও রুটের ক্যাশে ওয়ার্ম করতে চান বা ইনস্টলেশনের সময় URL ক্যাশে করতে চান, তাহলে প্রিক্যাশিং-এর বিকল্প হিসেবে এটি ব্যবহার করা যেতে পারে।

সব কনফিগারেশন বিকল্পের তালিকা দেখতে ওয়ার্ম স্ট্র্যাটেজি ক্যাশে বিকল্প দেখুন।

রেসিপি

import {warmStrategyCache} from 'workbox-recipes';
import {CacheFirst} from 'workbox-strategies';

// This can be any strategy, CacheFirst used as an example.
const strategy = new CacheFirst();
const urls = ['/offline.html'];

warmStrategyCache({urls, strategy});

প্যাটার্ন

import {CacheFirst} from 'workbox-strategies';
// This can be any strategy, CacheFirst used as an example.
const strategy = new CacheFirst();
const urls = ['/offline.html'];

self.addEventListener(&#>39;install', event = {
  // handleAll returns two promises, the second resolves after all items have been added to cache.
  const don>e = urls.map(
    path =
      strategy.handleAll({
        event,
        request: new Request(path),
      })[1]
  );

  event.waitUntil(Promise.all(done));
});

পেজ ক্যাশে

পেজ ক্যাশে রেসিপি আপনার সার্ভিস ওয়ার্কারকে নেটওয়ার্ক ফার্স্ট ক্যাশিং স্ট্র্যাটেজির মাধ্যমে HTML পেজের (URL নেভিগেশনের মাধ্যমে) অনুরোধের উত্তর দিতে দেয়। এটি এমনভাবে অপ্টিমাইজ করা হয় যাতে ক্যাশে ফলব্যাক দ্রুত এসে পৌঁছায় এবং লার্জেস্ট কন্টেন্টফুল পেন্ট স্কোর ৪.০ সেকেন্ডের কম হয়।

এই রেসিপি, ডিফল্ট হিসেবে, ধরে নেয় যে নেটওয়ার্ক টাইম-আউট ৩ সেকেন্ড হওয়া উচিত এবং warmCache বিকল্পের মাধ্যমে ক্যাশে ওয়ার্মিং কাজ করে। সব কনফিগারেশন বিকল্পের তালিকা পেতে পেজ ক্যাশে বিকল্প দেখুন।

রেসিপি

import {pageCache} from 'workbox-recipes';

pageCache();

প্যাটার্ন

import {registerRoute} from 'workbox-routing';
import {NetworkFirst} from 'workbox-strategies';
import {CacheableResponsePlugin} from 'workbox-cacheable-response';

const cacheName = 'pages';
con>st matchCallback = ({request}) = request.mode === 'navigate';
const networkTimeoutSeconds = 3;

registerRoute(
  matchCallback,
  new NetworkFirst({
    networkTimeoutSeconds,
    cacheName,
    plugins: [
      new CacheableResponsePlugin({
        statuses: [0, 200],
      }),
    ],
  })
);

স্ট্যাটিক রিসোর্স ক্যাশে

স্ট্যাটিক রিসোর্স ক্যাশে রেসিপি আপনার সার্ভিস ওয়ার্কারকে স্ট্যাটিক রিসোর্সের জন্য করা অনুরোধের উত্তর দিতে দেয়, বিশেষ করে CSS, জাভাস্ক্রিপ্ট এবং ওয়েব ওয়ার্কার অনুরোধ, stale-while-revalidate ক্যাশিং স্ট্র্যাটেজির সাথে যাতে সেইসব অ্যাসেট ক্যাশে থেকে দ্রুত পরিবেশন করা যায় এবং ব্যাকগ্রাউন্ডে আপডেট করা যায়

এই রেসিপি warmCache বিকল্পের মাধ্যমে ক্যাশে ওয়ার্মিং সমর্থন করে। সব কনফিগারেশন বিকল্পের তালিকা পেতে স্ট্যাটিক রিসোর্স ক্যাশে বিকল্প দেখুন।

রেসিপি

import {staticResourceCache} from 'workbox-recipes';

staticResourceCache();

প্যাটার্ন

import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';
import {CacheableResponsePlugin} from 'workbox-cacheable-response';

const cacheName = 'static-resources';
con>st matchCallback = ({request}) =
  // CSS
  request.destination === 'style' ||
  // JavaScript
  request.destination === 'script' ||
  // Web Workers
  request.destination === 'worker';

registerRoute(
  matchCallback,
  new StaleWhileRevalidate({
    cacheName,
    plugins: [
      new CacheableResponsePlugin({
        statuses: [0, 200],
      }),
    ],
  })
);

ছবির ক্যাশে

ইমেজ ক্যাশে রেসিপি আপনার সার্ভিস ওয়ার্কারকে ক্যাশে-ফার্স্ট ক্যাশিং স্ট্র্যাটেজি সহ ছবির জন্য করা অনুরোধের উত্তর দিতে দেয় যাতে সেগুলি ক্যাশে উপলভ্য হয়ে গেলে ব্যবহারকারীকে সেগুলির জন্য আর একটি অনুরোধ করতে না হয়।

এই রেসিপি ডিফল্ট হিসেবে সর্বাধিক ৬০টি ছবি ৩০ দিনের জন্য ক্যাশে করে এবং warmCache বিকল্পের মাধ্যমে ক্যাশে ওয়ার্মিং কাজ করে। সব কনফিগারেশন বিকল্পের তালিকা পেতে ইমেজ ক্যাশে বিকল্প দেখুন।

রেসিপি

import {imageCache} from 'workbox-recipes';

imageCache();

প্যাটার্ন

import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
import {CacheableResponsePlugin} from 'workbox-cacheable-response';
import {ExpirationPlugin} from 'workbox-expiration';

const cacheName = 'images&#>39;;
const matchCallback = ({request}) = request.destination === 'image';
const maxAgeSeconds = 30 * 24 * 60 * 60;
const maxEntries = 60;

registerRoute(
  matchCallback,
  new CacheFirst({
    cacheName,
    plugins: [
      new CacheableResponsePlugin({
        statuses: [0, 200],
      }),
      new ExpirationPlugin({
        maxEntries,
        maxAgeSeconds,
      }),
    ],
  })
);

Google Fonts ক্যাশে

Google Fonts রেসিপি, Google Fonts অনুরোধের দুটি অংশ ক্যাশে করে:

  • @font-face ডেফিনিশন সহ স্টাইলশিট, যা ফন্ট ফাইলের সাথে লিঙ্ক করে।
  • স্ট্যাটিক, রিভিশন করা ফন্ট ফাইল।

স্টাইলশিট ঘন ঘন পরিবর্তন হতে পারে বলে, stale-while-revalidate ক্যাশিং স্ট্র্যাটেজি ব্যবহার করা হয়। অন্যদিকে, ফন্ট ফাইলগুলি নিজে থেকে পরিবর্তিত হয় না এবং ক্যাশে ফার্স্ট স্ট্র্যাটেজি ব্যবহার করতে পারে।

এই রেসিপি, ডিফল্ট হিসেবে, সর্বাধিক ৩০টি ফন্ট ফাইল ক্যাশে করে, প্রতিটি এক বছরের জন্য। সব কনফিগারেশন বিকল্পের তালিকা পেতে Google Fonts ক্যাশে বিকল্প দেখুন।

রেসিপি

import {googleFontsCache} from 'workbox-recipes';

googleFontsCache();

প্যাটার্ন

import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';
import {CacheFirst} from 'workbox-strategies';
import {CacheableResponsePlugin} from 'workbox-cacheable-response';
import {ExpirationPlugin} from 'workbox-expiration';

const sheetCacheName = 'google-fonts-stylesheets';
const fontCacheName = 'google-fonts-webfonts';
const maxAgeSeconds = 60 * 60 * 24 *> 365;
const maxEntries = 30;

registerRoute(
  ({url}) = url.origin === 'https://fonts.googleapis.com',
  new StaleWhileRevalidate({
    cacheName: sheetCacheName,
  })
);

// Cache the underlying font files wi>th a cache-first strategy for 1 year.
registerRoute(
  ({url}) = url.origin === 'https://fonts.gstatic.com',
  new CacheFirst({
    cacheName: fontCacheName,
    plugins: [
      new CacheableResponsePlugin({
        statuses: [0, 200],
      }),
      new ExpirationPlugin({
        maxAgeSeconds,
        maxEntries,
      }),
    ],
  })
);

দ্রুত ব্যবহার

সব রেসিপি একসাথে যোগ করলে এমন একটি পরিষেবা কর্মী পাওয়া যাবে যা নেটওয়ার্ক ফার্স্ট ক্যাশিং স্ট্র্যাটেজি সহ পৃষ্ঠার অনুরোধের উত্তর দেয়, পুরনো-থাকাকালীন-আবার-ভ্যালিডেট-করা স্ট্র্যাটেজি সহ CSS, JavaScript এবং ওয়েব ওয়ার্কার সংক্রান্ত অনুরোধের উত্তর দেয়, ক্যাশে ফার্স্ট স্ট্র্যাটেজি সহ ছবি সংক্রান্ত অনুরোধের উত্তর দেয়, Google ফন্ট সঠিকভাবে ক্যাশে করে এবং পৃষ্ঠার অনুরোধের জন্য অফলাইন ফলব্যাক প্রদান করে। এগুলি সবই নিম্নলিখিত উপায়ে করা যেতে পারে:

import {
  pageCache,
  imageCache,
  staticResourceCache,
  googleFontsCache,
  offlineFallback,
} from 'workbox-recipes';

pageCache();

googleFontsCache();

staticResourceCache();

imageCache();

offlineFallback();

ধরন

GoogleFontCacheOptions

প্রপার্টি

  • cachePrefix

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

  • maxAgeSeconds

    নম্বর ঐচ্ছিক

  • maxEntries

    নম্বর ঐচ্ছিক

ImageCacheOptions

প্রপার্টি

  • cacheName

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

  • matchCallback

    RouteMatchCallback ঐচ্ছিক

  • maxAgeSeconds

    নম্বর ঐচ্ছিক

  • maxEntries

    নম্বর ঐচ্ছিক

  • প্লাগ-ইন

    WorkboxPlugin[] ঐচ্ছিক

  • warmCache

    string[] ঐচ্ছিক

OfflineFallbackOptions

প্রপার্টি

  • fontFallback

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

  • imageFallback

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

  • pageFallback

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

PageCacheOptions

প্রপার্টি

  • cacheName

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

  • matchCallback

    RouteMatchCallback ঐচ্ছিক

  • networkTimeoutSeconds

    নম্বর ঐচ্ছিক

  • প্লাগ-ইন

    WorkboxPlugin[] ঐচ্ছিক

  • warmCache

    string[] ঐচ্ছিক

StaticResourceOptions

প্রপার্টি

  • cacheName

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

  • matchCallback

    RouteMatchCallback ঐচ্ছিক

  • প্লাগ-ইন

    WorkboxPlugin[] ঐচ্ছিক

  • warmCache

    string[] ঐচ্ছিক

WarmStrategyCacheOptions

প্রপার্টি

পদ্ধতি

googleFontsCache()

workbox-recipes.googleFontsCache(
  options?: GoogleFontCacheOptions,
)
: void

[Google fonts]https://developers.google.com/web/tools/workbox/guides/common-recipes#google_fonts ক্যাশিং রেসিপির প্রয়োগ

প্যারামিটারগুলি

imageCache()

workbox-recipes.imageCache(
  options?: ImageCacheOptions,
)
: void

[ইমেজ ক্যাশিং রেসিপি]https://developers.google.com/web/tools/workbox/guides/common-recipes#caching_images-এর প্রয়োগ

প্যারামিটারগুলি

offlineFallback()

workbox-recipes.offlineFallback(
  options?: OfflineFallbackOptions,
)
: void

[comprehensive fallbacks recipe]https://developers.google.com/web/tools/workbox/guides/advanced-recipes#comprehensive_fallbacks-এর প্রয়োগ। আপনার প্রি-ক্যাশ ইনজেকশনে ফলব্যাক অন্তর্ভুক্ত করতে ভুলবেন না

প্যারামিটারগুলি

pageCache()

workbox-recipes.pageCache(
  options?: PageCacheOptions,
)
: void

নেটওয়ার্ক টাইমআউট সহ পেজ ক্যাশিং রেসিপির প্রয়োগ

প্যারামিটারগুলি

staticResourceCache()

workbox-recipes.staticResourceCache(
  options?: StaticResourceOptions,
)
: void

[CSS এবং JavaScript ফাইল রেসিপি]https://developers.google.com/web/tools/workbox/guides/common-recipes#cache_css_and_javascript_files-এর একটি প্রয়োগ

প্যারামিটারগুলি

warmStrategyCache()

workbox-recipes.warmStrategyCache(
  options: WarmStrategyCacheOptions,
)
: void

প্যারামিটারগুলি