CacheQueryOptions Chrome 54-এ পৌঁছান

আপনি যদি ক্যাশে স্টোরেজ API ব্যবহার করেন, হয় কোনো পরিষেবা কর্মীর মধ্যে অথবা সরাসরি window.caches এর মাধ্যমে ওয়েব অ্যাপস থেকে, কিছু ভালো খবর আছে: Chrome 54 থেকে শুরু করে, CacheQueryOptions এর সম্পূর্ণ সেট সমর্থিত, যা আপনার ক্যাশে করা প্রতিক্রিয়াগুলি খুঁজে পাওয়া সহজ করে তোলে। খুঁজছি।

কি অপশন পাওয়া যায়?

নিম্নলিখিত বিকল্পগুলি CacheStorage.match() বা Cache.match() এ যেকোনো কলে সেট করা যেতে পারে। সেট করা না থাকলে, সেগুলি সব ডিফল্ট false (অথবা cacheName এর জন্য undefined ), এবং আপনি match() করতে একটি একক কলে একাধিক বিকল্প ব্যবহার করতে পারেন।

ignoreSearch

এটি একটি URL-এর অনুসন্ধানের অংশকে উপেক্ষা করার জন্য ম্যাচিং অ্যালগরিদমকে নির্দেশ দেয়, যা URL ক্যোয়ারী প্যারামিটার নামেও পরিচিত৷ এটি কাজে আসতে পারে যখন আপনার কাছে একটি উৎস URL থাকে যাতে ক্যোয়ারী প্যারামিটার থাকে যা ব্যবহার করা হয়, উদাহরণস্বরূপ, অ্যানালিটিক্স ট্র্যাকিং, কিন্তু ক্যাশে একটি রিসোর্সকে অনন্যভাবে সনাক্ত করার ক্ষেত্রে উল্লেখযোগ্য নয়৷ উদাহরণস্বরূপ, অনেক লোক নিম্নলিখিত পরিষেবা কর্মী "গোটচা" এর শিকার হয়েছে:

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open('my-cache')
      .then(cache => cache.add('index.html'))
  );
});

self.addEventListener('fetch', event => {
  // Make sure this is a navigation request before responding.
  if (event.request.mode === 'navigation') {
    event.respondWith(
      caches.match(event.request) || fetch(event.request)
    );
  }
});

এই ধরণের কোড প্রত্যাশিতভাবে কাজ করে যখন একজন ব্যবহারকারী সরাসরি index.html এ নেভিগেট করে, কিন্তু যদি আপনার ওয়েব অ্যাপ ইনবাউন্ড লিঙ্কগুলির ট্র্যাক রাখতে একটি বিশ্লেষণ প্রদানকারী ব্যবহার করে এবং ব্যবহারকারী index.html?utm_source=some-referral এ নেভিগেট করে তাহলে কী হবে? ডিফল্টরূপে, index.html?utm_source=some-referral to caches.match() পাস করলে index.html এর জন্য এন্ট্রি ফেরত আসবে না। কিন্তু যদি ignoreSearch true সেট করা থাকে, তাহলে আপনি যে ক্যাশড প্রতিক্রিয়াটি আশা করতে চান তা পুনরুদ্ধার করতে পারেন, কোন ক্যোয়ারী প্যারামিটার সেট করা হোক না কেন:

caches.match(event.request, {ignoreSearch: true})

cacheName

আপনার একাধিক ক্যাশে থাকলে cacheName কাজে আসে এবং আপনি একটি প্রতিক্রিয়া চান যা একটি নির্দিষ্ট ক্যাশে সংরক্ষণ করা হয়। এটি ব্যবহার করা আপনার প্রশ্নগুলিকে আরও দক্ষ করে তুলতে পারে (যেহেতু ব্রাউজারকে শুধুমাত্র একটি ক্যাশে চেক করতে হবে, সেগুলির পরিবর্তে) এবং আপনাকে একটি নির্দিষ্ট URL এর জন্য একটি নির্দিষ্ট প্রতিক্রিয়া পুনরুদ্ধার করার অনুমতি দেয় যখন একাধিক ক্যাশে সেই URLটি একটি কী হিসাবে থাকতে পারে। cacheName শুধুমাত্র যখন CacheStorage.match() এর সাথে ব্যবহার করা হয় তখন একটি প্রভাব ফেলে, Cache.match() নয়, কারণ Cache.match() ইতিমধ্যেই ক্যাশে নামে একটি একক-এ কাজ করে।

// The following are functionally equivalent:
caches.open('my-cache')
  .then(cache => cache.match('index.html'));

// or...
caches.match('index.html', {cacheName: 'my-cache'});

ignoreMethod এবং ignoreVary

ignoreMethod এবং ignoreVary ignoreSearch এবং cacheName চেয়ে একটু বেশি কুলুঙ্গি, কিন্তু এগুলি নির্দিষ্ট উদ্দেশ্যে পরিবেশন করে।

ignoreMethod আপনাকে একটি Request অবজেক্টে পাস করার অনুমতি দেয় যেটিতে যে কোনো method ( POST , PUT , ইত্যাদি) আছে প্রথম প্যারামিটার হিসেবে match() । সাধারণত, শুধুমাত্র GET বা HEAD অনুরোধের অনুমতি দেওয়া হয়।

// In a more realistic scenario, postRequest might come from
// the request property of a FetchEvent.
const postRequest = new Request('index.html', {method: 'post'});

// This will never match anything.
caches.match(postRequest);

// This will match index.html in any cache.
caches.match(postRequest, {ignoreMethod: true});

যদি true তে সেট করা হয়, ignoreVary অর্থ হল ক্যাশে লুকআপগুলি ক্যাশে করা প্রতিক্রিয়াগুলিতে সেট করা Vary শিরোনামগুলিকে বিবেচনা না করেই করা হবে৷ আপনি যদি জানেন যে আপনি ক্যাশে করা প্রতিক্রিয়াগুলির সাথে কাজ করছেন না যা ভ্যারি হেডার ব্যবহার করে, তাহলে আপনাকে এই বিকল্পটি সেট করার বিষয়ে চিন্তা করতে হবে না৷

ব্রাউজার সমর্থন

CacheQueryOptions শুধুমাত্র সেই ব্রাউজারগুলিতে প্রাসঙ্গিক যা ক্যাশে স্টোরেজ API সমর্থন করে৷ ক্রোম এবং ক্রোমিয়াম-ভিত্তিক ব্রাউজারগুলি ছাড়াও, এটি বর্তমানে ফায়ারফক্সের মধ্যে সীমাবদ্ধ, যা ইতিমধ্যেই স্থানীয়ভাবে CacheQueryOptions সমর্থন করে।

যে ডেভেলপাররা 54-এর আগে Chrome-এর সংস্করণে CacheQueryOptions ব্যবহার করতে চান, তারা Arthur Stolyar- এর সৌজন্যে পলিফিল ব্যবহার করতে পারেন।