ওয়ার্কবক্স- মেয়াদোত্তীর্ণ

এটি একটি ক্যাশে কতক্ষণ আইটেমগুলিকে একটি ক্যাশে সংরক্ষণ করার অনুমতি দেওয়া উচিত বা একটি ক্যাশে কতগুলি আইটেম রাখা উচিত তার পরিপ্রেক্ষিতে ক্যাশেতে সীমাবদ্ধতা রাখতে চাওয়া মোটামুটি সাধারণ। ওয়ার্কবক্স workbox-expiration প্লাগইনের মাধ্যমে এই কার্যকারিতা প্রদান করে যা আপনাকে একটি ক্যাশে এন্ট্রির সংখ্যা সীমিত করতে এবং/অথবা দীর্ঘ সময়ের জন্য ক্যাশে করা এন্ট্রিগুলি সরাতে দেয়।

ক্যাশে এন্ট্রির সংখ্যা সীমাবদ্ধ করুন

একটি ক্যাশে সংরক্ষিত এন্ট্রির সংখ্যা সীমাবদ্ধ করতে, আপনি maxEntries বিকল্পটি ব্যবহার করতে পারেন:

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({
        maxEntries: 20,
      }),
    ],
  })
);

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

ক্যাশেড এন্ট্রির বয়স সীমাবদ্ধ করুন

একটি অনুরোধ কতক্ষণের জন্য ক্যাশ করা হবে তা সীমাবদ্ধ করতে, আপনি maxAgeSeconds বিকল্পটি ব্যবহার করে সেকেন্ডের মধ্যে সর্বোচ্চ বয়স নির্ধারণ করতে পারেন:

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({
        maxAgeSeconds: 24 * 60 * 60,
      }),
    ],
  })
);

প্লাগইন প্রতিটি অনুরোধ বা ক্যাশে আপডেটের পরে এন্ট্রি পরীক্ষা করবে এবং মুছে ফেলবে।

উন্নত ব্যবহার

আপনি যদি অন্য যেকোন ওয়ার্কবক্স মডিউল থেকে মেয়াদ শেষ হওয়ার যুক্তি ব্যবহার করতে চান, তাহলে আপনি CacheExpiration ক্লাসের সাথে তা করতে পারেন।

একটি ক্যাশে সীমাবদ্ধতা প্রয়োগ করতে, আপনি যে ক্যাশে নিয়ন্ত্রণ করতে চান তার জন্য আপনি CacheExpiration এর একটি উদাহরণ তৈরি করবেন:

import {CacheExpiration} from 'workbox-expiration';

const cacheName = 'my-cache';
const expirationManager = new CacheExpiration(cacheName, {
  maxAgeSeconds: 24 * 60 * 60,
  maxEntries: 20,
});

যখনই আপনি একটি ক্যাশেড এন্ট্রি আপডেট করেন, আপনাকে updateTimestamp() পদ্ধতিতে কল করতে হবে যাতে এর বয়স আপডেট হয়।

await openCache.put(request, response);

await expirationManager.updateTimestamp(request.url);

তারপরে, যখনই আপনি এন্ট্রিগুলির একটি সেটের মেয়াদ শেষ করতে চান, আপনি expireEntries() পদ্ধতিতে কল করতে পারেন যা maxAgeSeconds এবং maxEntries কনফিগারেশন প্রয়োগ করবে।

await expirationManager.expireEntries();

প্রকারভেদ

CacheExpiration

CacheExpiration ক্লাস আপনাকে একটি মেয়াদোত্তীর্ণ এবং/অথবা Cache সংরক্ষিত প্রতিক্রিয়ার সংখ্যা নির্ধারণ করতে দেয়।

বৈশিষ্ট্য

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

    অকার্যকর

    একটি নতুন CacheExpiration দৃষ্টান্ত তৈরি করতে আপনাকে কমপক্ষে একটি config বৈশিষ্ট্য প্রদান করতে হবে।

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

    (cacheName: string, config?: CacheExpirationConfig) => {...}

    • cacheName

      স্ট্রিং

      সীমাবদ্ধতা প্রয়োগ করার জন্য ক্যাশের নাম৷

    • কনফিগারেশন

      CacheExpirationConfig ঐচ্ছিক

  • মুছে ফেলা

    অকার্যকর

    ক্যাশে মেয়াদ শেষ হওয়ার মেটাডেটা ট্র্যাক রাখতে ব্যবহৃত IndexedDB অবজেক্ট স্টোরটি সরিয়ে দেয়।

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

    () => {...}

    • রিটার্ন

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

  • মেয়াদ শেষ হওয়া এন্ট্রি

    অকার্যকর

    প্রদত্ত ক্যাশে এবং প্রদত্ত মানদণ্ডের জন্য এন্ট্রির মেয়াদ শেষ হয়।

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

    () => {...}

    • রিটার্ন

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

  • URL এর মেয়াদ শেষ

    অকার্যকর

    একটি URL ব্যবহার করার আগে মেয়াদ শেষ হয়ে গেছে কিনা তা পরীক্ষা করতে ব্যবহার করা যেতে পারে।

    এটির জন্য IndexedDB থেকে একটি সন্ধান করা প্রয়োজন, তাই ধীর হতে পারে।

    দ্রষ্টব্য: এই পদ্ধতিটি ক্যাশ করা এন্ট্রি মুছে ফেলবে না, ইন্ডেক্সডডিবি এবং ক্যাশে এন্ট্রিগুলি সরাতে expireEntries() কল করুন।

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

    (url: string) => {...}

    • url

      স্ট্রিং

    • রিটার্ন

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

  • আপডেট টাইমস্ট্যাম্প

    অকার্যকর

    প্রদত্ত URL এর জন্য টাইমস্ট্যাম্প আপডেট করুন। এটি নিশ্চিত করে যে সর্বাধিক এন্ট্রিগুলির উপর ভিত্তি করে এন্ট্রিগুলি সরানোর সময়, অতি সম্প্রতি ব্যবহৃত সঠিক বা মেয়াদ শেষ হওয়ার সময়, টাইমস্ট্যাম্প আপ-টু-ডেট।

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

    (url: string) => {...}

    • url

      স্ট্রিং

    • রিটার্ন

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

ExpirationPlugin

এই প্লাগইনটি একটি workbox-strategy নিয়মিতভাবে বয়স এবং/অথবা ক্যাশে করা অনুরোধের সংখ্যার একটি সীমা প্রয়োগ করতে ব্যবহার করা যেতে পারে।

এটি শুধুমাত্র workbox-strategy দৃষ্টান্তগুলির সাথে ব্যবহার করা যেতে পারে যেখানে একটি কাস্টম cacheName সম্পত্তি সেট আছে। অন্য কথায়, ডিফল্ট রানটাইম ক্যাশে নাম ব্যবহার করে এমন কৌশলের এন্ট্রির মেয়াদ শেষ করতে এটি ব্যবহার করা যাবে না।

যখনই একটি ক্যাশে করা প্রতিক্রিয়া ব্যবহার করা হয় বা আপডেট করা হয়, তখন এই প্লাগইনটি সংশ্লিষ্ট ক্যাশে দেখবে এবং কোনো পুরানো বা অতিরিক্ত প্রতিক্রিয়া মুছে ফেলবে।

maxAgeSeconds ব্যবহার করার সময়, প্রতিক্রিয়াগুলি মেয়াদ শেষ হওয়ার পরে একবার ব্যবহার করা যেতে পারে কারণ ক্যাশ করা প্রতিক্রিয়া ব্যবহার না করা পর্যন্ত মেয়াদ শেষ হওয়া পরিষ্কার করা হবে না। যদি প্রতিক্রিয়াটির একটি "তারিখ" শিরোনাম থাকে, তাহলে একটি হালকা ওজনের মেয়াদ শেষ হওয়ার পরীক্ষা করা হয় এবং প্রতিক্রিয়াটি অবিলম্বে ব্যবহার করা হবে না।

maxEntries ব্যবহার করার সময়, সম্প্রতি অনুরোধ করা এন্ট্রিটি প্রথমে ক্যাশে থেকে সরানো হবে।

বৈশিষ্ট্য

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

    অকার্যকর

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

    (config?: ExpirationPluginOptions) => {...}

  • ক্যাশে এবং মেটাডেটা মুছুন

    অকার্যকর

    এটি একটি সহায়ক পদ্ধতি যা দুটি অপারেশন সঞ্চালন করে:

    • আপনার পক্ষ থেকে caches.delete() কল করে এই প্লাগইন ইন্সট্যান্সের সাথে যুক্ত অন্তর্নিহিত ক্যাশে ইনস্ট্যান্স মুছে দেয়।
    • প্রতিটি ক্যাশে উদাহরণের জন্য মেয়াদ শেষ হওয়ার বিবরণ ট্র্যাক রাখতে ব্যবহৃত IndexedDB থেকে মেটাডেটা মুছে দেয়।

    ক্যাশের মেয়াদ শেষ হওয়ার সময় ব্যবহার করার সময়, এই পদ্ধতিতে কল করা সরাসরি caches.delete() কল করার চেয়ে ভালো, কারণ এটি নিশ্চিত করবে যে IndexedDB মেটাডেটাও পরিষ্কারভাবে মুছে ফেলা হয়েছে এবং IndexedDB ইনস্ট্যান্সগুলি মুছে ফেলা হয়েছে।

    মনে রাখবেন যে আপনি যদি একটি প্রদত্ত ক্যাশের জন্য ক্যাশের মেয়াদ শেষ না করে থাকেন তবে caches.delete() কল করা এবং ক্যাশের নাম পাস করাই যথেষ্ট। সেই ক্ষেত্রে পরিষ্কারের জন্য কোন ওয়ার্কবক্স-নির্দিষ্ট পদ্ধতির প্রয়োজন নেই।

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

    () => {...}

    • রিটার্ন

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

ExpirationPluginOptions

বৈশিষ্ট্য

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • সর্বোচ্চ বয়স সেকেন্ড

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

  • maxEntry

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

  • purgeOnQuotaError

    বুলিয়ান ঐচ্ছিক

,

এটি একটি ক্যাশে কতক্ষণ আইটেমগুলিকে একটি ক্যাশে সংরক্ষণ করার অনুমতি দেওয়া উচিত বা একটি ক্যাশে কতগুলি আইটেম রাখা উচিত তার পরিপ্রেক্ষিতে ক্যাশেতে সীমাবদ্ধতা রাখতে চাওয়া মোটামুটি সাধারণ। ওয়ার্কবক্স workbox-expiration প্লাগইনের মাধ্যমে এই কার্যকারিতা প্রদান করে যা আপনাকে একটি ক্যাশে এন্ট্রির সংখ্যা সীমিত করতে এবং/অথবা দীর্ঘ সময়ের জন্য ক্যাশে করা এন্ট্রিগুলি সরাতে দেয়।

ক্যাশে এন্ট্রির সংখ্যা সীমাবদ্ধ করুন

একটি ক্যাশে সংরক্ষিত এন্ট্রির সংখ্যা সীমাবদ্ধ করতে, আপনি maxEntries বিকল্পটি ব্যবহার করতে পারেন:

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({
        maxEntries: 20,
      }),
    ],
  })
);

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

ক্যাশেড এন্ট্রির বয়স সীমাবদ্ধ করুন

একটি অনুরোধ কতক্ষণের জন্য ক্যাশ করা হবে তা সীমাবদ্ধ করতে, আপনি maxAgeSeconds বিকল্পটি ব্যবহার করে সেকেন্ডের মধ্যে সর্বোচ্চ বয়স নির্ধারণ করতে পারেন:

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({
        maxAgeSeconds: 24 * 60 * 60,
      }),
    ],
  })
);

প্লাগইন প্রতিটি অনুরোধ বা ক্যাশে আপডেটের পরে এন্ট্রি পরীক্ষা করবে এবং মুছে ফেলবে।

উন্নত ব্যবহার

আপনি যদি অন্য যেকোন ওয়ার্কবক্স মডিউল থেকে মেয়াদ শেষ হওয়ার যুক্তি ব্যবহার করতে চান, তাহলে আপনি CacheExpiration ক্লাসের সাথে তা করতে পারেন।

একটি ক্যাশে সীমাবদ্ধতা প্রয়োগ করতে, আপনি যে ক্যাশে নিয়ন্ত্রণ করতে চান তার জন্য আপনি CacheExpiration এর একটি উদাহরণ তৈরি করবেন:

import {CacheExpiration} from 'workbox-expiration';

const cacheName = 'my-cache';
const expirationManager = new CacheExpiration(cacheName, {
  maxAgeSeconds: 24 * 60 * 60,
  maxEntries: 20,
});

যখনই আপনি একটি ক্যাশেড এন্ট্রি আপডেট করেন, আপনাকে updateTimestamp() পদ্ধতিতে কল করতে হবে যাতে এর বয়স আপডেট হয়।

await openCache.put(request, response);

await expirationManager.updateTimestamp(request.url);

তারপরে, যখনই আপনি এন্ট্রিগুলির একটি সেটের মেয়াদ শেষ করতে চান, আপনি expireEntries() পদ্ধতিতে কল করতে পারেন যা maxAgeSeconds এবং maxEntries কনফিগারেশন প্রয়োগ করবে।

await expirationManager.expireEntries();

প্রকারভেদ

CacheExpiration

CacheExpiration ক্লাস আপনাকে একটি মেয়াদোত্তীর্ণ এবং/অথবা Cache সংরক্ষিত প্রতিক্রিয়ার সংখ্যা নির্ধারণ করতে দেয়।

বৈশিষ্ট্য

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

    অকার্যকর

    একটি নতুন CacheExpiration দৃষ্টান্ত তৈরি করতে আপনাকে কমপক্ষে একটি config বৈশিষ্ট্য প্রদান করতে হবে।

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

    (cacheName: string, config?: CacheExpirationConfig) => {...}

    • cacheName

      স্ট্রিং

      সীমাবদ্ধতা প্রয়োগ করার জন্য ক্যাশের নাম৷

    • কনফিগারেশন

      CacheExpirationConfig ঐচ্ছিক

  • মুছে ফেলা

    অকার্যকর

    ক্যাশে মেয়াদ শেষ হওয়ার মেটাডেটা ট্র্যাক রাখতে ব্যবহৃত IndexedDB অবজেক্ট স্টোরটি সরিয়ে দেয়।

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

    () => {...}

    • রিটার্ন

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

  • মেয়াদ শেষ হওয়া এন্ট্রি

    অকার্যকর

    প্রদত্ত ক্যাশে এবং প্রদত্ত মানদণ্ডের জন্য এন্ট্রির মেয়াদ শেষ হয়।

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

    () => {...}

    • রিটার্ন

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

  • URL এর মেয়াদ শেষ

    অকার্যকর

    একটি URL ব্যবহার করার আগে মেয়াদ শেষ হয়ে গেছে কিনা তা পরীক্ষা করতে ব্যবহার করা যেতে পারে।

    এটির জন্য IndexedDB থেকে একটি সন্ধান করা প্রয়োজন, তাই ধীর হতে পারে।

    দ্রষ্টব্য: এই পদ্ধতিটি ক্যাশ করা এন্ট্রি মুছে ফেলবে না, ইন্ডেক্সডডিবি এবং ক্যাশে এন্ট্রিগুলি সরাতে expireEntries() কল করুন।

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

    (url: string) => {...}

    • url

      স্ট্রিং

    • রিটার্ন

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

  • আপডেট টাইমস্ট্যাম্প

    অকার্যকর

    প্রদত্ত URL এর জন্য টাইমস্ট্যাম্প আপডেট করুন। এটি নিশ্চিত করে যে সর্বাধিক এন্ট্রিগুলির উপর ভিত্তি করে এন্ট্রিগুলি সরানোর সময়, অতি সম্প্রতি ব্যবহৃত সঠিক বা মেয়াদ শেষ হওয়ার সময়, টাইমস্ট্যাম্প আপ-টু-ডেট।

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

    (url: string) => {...}

    • url

      স্ট্রিং

    • রিটার্ন

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

ExpirationPlugin

এই প্লাগইনটি একটি workbox-strategy নিয়মিতভাবে বয়স এবং/অথবা ক্যাশে করা অনুরোধের সংখ্যার একটি সীমা প্রয়োগ করতে ব্যবহার করা যেতে পারে।

এটি শুধুমাত্র workbox-strategy দৃষ্টান্তগুলির সাথে ব্যবহার করা যেতে পারে যেখানে একটি কাস্টম cacheName সম্পত্তি সেট আছে। অন্য কথায়, ডিফল্ট রানটাইম ক্যাশে নাম ব্যবহার করে এমন কৌশলের এন্ট্রির মেয়াদ শেষ করতে এটি ব্যবহার করা যাবে না।

যখনই একটি ক্যাশে করা প্রতিক্রিয়া ব্যবহার করা হয় বা আপডেট করা হয়, তখন এই প্লাগইনটি সংশ্লিষ্ট ক্যাশে দেখবে এবং কোনো পুরানো বা অতিরিক্ত প্রতিক্রিয়া মুছে ফেলবে।

maxAgeSeconds ব্যবহার করার সময়, প্রতিক্রিয়াগুলি মেয়াদ শেষ হওয়ার পরে একবার ব্যবহার করা যেতে পারে কারণ ক্যাশ করা প্রতিক্রিয়া ব্যবহার না করা পর্যন্ত মেয়াদ শেষ হওয়া পরিষ্কার করা হবে না। যদি প্রতিক্রিয়াটির একটি "তারিখ" শিরোনাম থাকে, তাহলে একটি হালকা ওজনের মেয়াদ শেষ হওয়ার পরীক্ষা করা হয় এবং প্রতিক্রিয়াটি অবিলম্বে ব্যবহার করা হবে না।

maxEntries ব্যবহার করার সময়, সম্প্রতি অনুরোধ করা এন্ট্রিটি প্রথমে ক্যাশে থেকে সরানো হবে।

বৈশিষ্ট্য

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

    অকার্যকর

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

    (config?: ExpirationPluginOptions) => {...}

  • ক্যাশে এবং মেটাডেটা মুছুন

    অকার্যকর

    এটি একটি সহায়ক পদ্ধতি যা দুটি অপারেশন সঞ্চালন করে:

    • আপনার পক্ষ থেকে caches.delete() কল করে এই প্লাগইন ইন্সট্যান্সের সাথে যুক্ত অন্তর্নিহিত ক্যাশে ইনস্ট্যান্স মুছে দেয়।
    • প্রতিটি ক্যাশে উদাহরণের জন্য মেয়াদ শেষ হওয়ার বিবরণ ট্র্যাক রাখতে ব্যবহৃত IndexedDB থেকে মেটাডেটা মুছে দেয়।

    ক্যাশের মেয়াদ শেষ হওয়ার সময় ব্যবহার করার সময়, এই পদ্ধতিতে কল করা সরাসরি caches.delete() কল করার চেয়ে ভালো, কারণ এটি নিশ্চিত করবে যে IndexedDB মেটাডেটাও পরিষ্কারভাবে মুছে ফেলা হয়েছে এবং IndexedDB ইনস্ট্যান্সগুলি মুছে ফেলা হয়েছে।

    মনে রাখবেন যে আপনি যদি একটি প্রদত্ত ক্যাশের জন্য ক্যাশের মেয়াদ শেষ না করে থাকেন তবে caches.delete() কল করা এবং ক্যাশের নাম পাস করাই যথেষ্ট। সেই ক্ষেত্রে পরিষ্কারের জন্য কোন ওয়ার্কবক্স-নির্দিষ্ট পদ্ধতির প্রয়োজন নেই।

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

    () => {...}

    • রিটার্ন

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

ExpirationPluginOptions

বৈশিষ্ট্য

  • ম্যাচ অপশন

    CacheQueryOptions ঐচ্ছিক

  • সর্বোচ্চ বয়স সেকেন্ড

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

  • maxEntry

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

  • purgeOnQuotaError

    বুলিয়ান ঐচ্ছিক