সমস্ত ব্রাউজার আপনার ওয়েব অ্যাপের উৎস ব্যবহার করার জন্য অনুমোদিত স্টোরেজের পরিমাণের উপর একটি উচ্চ সীমা আরোপ করে। আপনার ওয়েবসাইটের ক্যাশিং দক্ষতা এবং নির্ভরযোগ্যতাকে প্রভাবিত করতে পারে এমন স্টোরেজ কোটার সীমাবদ্ধতা এড়াতে আপনি ওয়ার্কবক্সকে রানটাইমে ক্যাশে করা ডেটা স্বয়ংক্রিয়ভাবে পরিষ্কার করতে কনফিগার করতে পারেন।
কোন কনফিগারেশন বিকল্পগুলি সমর্থিত?
একটি রুট এবং রানটাইম ক্যাশিং কৌশল সেট আপ করার সময়, আপনি workbox-expiration
সেটিংসের সাথে কনফিগার করা ExpirationPlugin
-এর একটি উদাহরণ যোগ করতে পারেন যা আপনার ক্যাশে করা সম্পদের ধরনটির জন্য সবচেয়ে বেশি অর্থবহ।
উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনটি রানটাইমে ছবি ক্যাশ করার জন্য ব্যবহার করা যেতে পারে, কোটা অতিক্রম করলে স্পষ্ট সীমার পাশাপাশি স্বয়ংক্রিয় ক্লিনআপ উভয়ই:
import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
import {ExpirationPlugin} from 'workbox-expiration';
registerRoute(
({request}) => request.destination === 'image',
// Use a cache-first strategy with the following config:
new CacheFirst({
// You need to provide a cache name when using expiration.
cacheName: 'images',
plugins: [
new ExpirationPlugin({
// Keep at most 50 entries.
maxEntries: 50,
// Don't keep any entries for more than 30 days.
maxAgeSeconds: 30 * 24 * 60 * 60,
// Automatically cleanup if quota is exceeded.
purgeOnQuotaError: true
})
]
})
);
ExpirationPlugin
ব্যবহার করার সময় আপনাকে maxEntries
, maxAgeSeconds
বা উভয় সেট করতে হবে। purgeOnQuotaError
ঐচ্ছিক।
maxEntry
এটি একটি প্রদত্ত ক্যাশের জন্য এন্ট্রির সংখ্যার (অর্থাৎ অনন্য ইউআরএল) উপর একটি উচ্চ সীমা আরোপ করে।
এটি সেট করা সাধারণত একটি ভাল ধারণা, যদি না আপনি জানেন যে শুধুমাত্র অল্প সংখ্যক সম্ভাব্য URL আছে যেগুলি প্রদত্ত কৌশল দ্বারা পরিচালিত হতে পারে।
সর্বোচ্চ বয়স সেকেন্ড
এই সংখ্যার চেয়ে বেশি সেকেন্ড আগে ক্যাশে যুক্ত করা এন্ট্রিগুলিকে পুরানো বলে বিবেচিত হবে এবং পরের বার ক্যাশে অ্যাক্সেস করার সময় স্বয়ংক্রিয়ভাবে পরিষ্কার হয়ে যাবে৷
স্টোরেজ কোটা পরিচালনার ক্ষেত্রে এটি maxEntries
মতো কার্যকর নয়, যেহেতু আপনার ক্যাশেগুলি ইচ্ছামত বড় হতে পারে যতক্ষণ না এন্ট্রিগুলি অল্প সময়ের মধ্যে যোগ করা হয়। এটি সবচেয়ে কার্যকর যখন আপনি জানেন যে সতেজতার একটি উচ্চ সীমা রয়েছে যা আপনি আরোপ করতে চান এবং পুরানো এন্ট্রিগুলিকে ঘিরে রাখা আপনার ওয়েব অ্যাপের জন্য খুব কম মূল্যবান।
purgeOnQuotaError
এই বিকল্পটি আপনাকে একটি প্রদত্ত ক্যাশে স্বয়ংক্রিয়ভাবে মুছে ফেলার জন্য নিরাপদ হিসাবে চিহ্নিত করার অনুমতি দেয় আপনার ওয়েব অ্যাপ উপলব্ধ সঞ্চয়স্থান অতিক্রম করে।
এই বিকল্পটি বর্তমানে false
ডিফল্ট। রানটাইম ক্যাশে, সাধারণভাবে, মুছে ফেলার মুখে স্থিতিস্থাপক হওয়া উচিত, তাই এই বিকল্পটিকে true
হিসাবে সেট করা একটি ভাল অভ্যাস, এবং আপনার ওয়েব অ্যাপটি স্টোরেজ সীমাবদ্ধতার মুখে স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করতে পারে তা নিশ্চিত করতে সহায়তা করে।
আপনি কত তথ্য সংরক্ষণ করার অনুমতি দেওয়া হয়?
প্রতিটি ব্রাউজারের নিজস্ব সঞ্চয়স্থানের ঊর্ধ্ব সীমা রয়েছে, তাই কোন একক উত্তর নেই। উপরন্তু, কিছু ব্রাউজারে একটি গতিশীল সীমা থাকে যা প্রদত্ত ডিভাইসে বিনামূল্যের স্টোরেজের পরিমাণের উপর ভিত্তি করে পরিবর্তিত হয়, তাই কার্যকর উপরের সীমা বিজ্ঞপ্তি ছাড়াই পরিবর্তিত হতে পারে।
কিছু ব্রাউজার navigator.storage.estimate()
এর মাধ্যমে, উপরের সীমা সহ, আপনার উত্স যে আনুমানিক পরিমাণ স্টোরেজ ব্যবহার করছে তা জিজ্ঞাসা করার জন্য একটি ইন্টারফেস প্রকাশ করে। আপনি কীভাবে এটি আপনার নিজের ওয়েব অ্যাপে ব্যবহার করতে পারেন সে সম্পর্কে " অনুমান করা উপলব্ধ স্টোরেজ স্পেস " নিবন্ধে আরও তথ্য রয়েছে৷
বিশেষ Chrome ছদ্মবেশী বিবেচনা
ক্রোমের ছদ্মবেশী মোডে একটি ওয়েব অ্যাপ খোলার ফলে সঞ্চয়স্থানের উপর একটি বিশেষ সীমাবদ্ধতা আরোপ করা হয় যা সাধারণ ব্রাউজিং প্রসঙ্গে প্রযোজ্য নয়: আপনার ডিভাইসে উপলব্ধ স্থান নির্বিশেষে প্রায় 100 মেগাবাইটের কোটা সীমা রয়েছে।
অস্বচ্ছ প্রতিক্রিয়া থেকে সাবধান!
অপ্রত্যাশিতভাবে উচ্চ কোটা ব্যবহারের একটি সাধারণ উৎস হল অস্বচ্ছ প্রতিক্রিয়াগুলির রানটাইম ক্যাশিংয়ের কারণে, যার অর্থ হল, CORS সক্ষম না করে করা অনুরোধের ক্রস-অরিজিন প্রতিক্রিয়া ।
নিরাপত্তা বিবেচনায় ব্রাউজারগুলি স্বয়ংক্রিয়ভাবে সেই অস্বচ্ছ প্রতিক্রিয়াগুলির কোটা প্রভাবকে বৃদ্ধি করে৷ উদাহরণস্বরূপ, Chrome-এ, এমনকি কয়েক কিলোবাইটের একটি অস্বচ্ছ প্রতিক্রিয়া আপনার কোটা ব্যবহারের দিকে প্রায় 7 মেগাবাইট অবদান রাখবে।
একবার আপনি অস্বচ্ছ প্রতিক্রিয়া ক্যাশ করা শুরু করলে আপনি যতটা আশা করেছিলেন তার থেকে আপনি দ্রুত অনেক বেশি কোটা ব্যবহার করতে পারেন, তাই সর্বোত্তম অনুশীলন হল ExpirationPlugin
ব্যবহার করা maxEntries
, এবং সম্ভাব্য purgeOnQuotaError
, যথাযথভাবে কনফিগার করা।