স্থায়ী সংরক্ষণ গুরুত্বপূর্ণ ডেটাকে মুছে যাওয়া থেকে রক্ষা করতে এবং ডেটা হারানোর সম্ভাবনা কমাতে সাহায্য করে।
ডিস্ক স্পেস কম থাকার মতো স্টোরেজ চাপের সম্মুখীন হলে, ব্রাউজারগুলো সাধারণত সবচেয়ে কম ব্যবহৃত অরিজিন থেকে Cache API এবং IndexedDB সহ ডেটা সরিয়ে দেয় । অ্যাপটি যদি সার্ভারের সাথে ডেটা সিঙ্ক না করে থাকে, তবে এর ফলে ডেটা নষ্ট হতে পারে এবং অ্যাপটি কাজ করার জন্য প্রয়োজনীয় রিসোর্স সরিয়ে নেওয়ার মাধ্যমে এর নির্ভরযোগ্যতা কমে যায়, যা উভয়ই ব্যবহারকারীর জন্য নেতিবাচক অভিজ্ঞতার কারণ হয়।
সৌভাগ্যবশত, ক্রোম টিমের গবেষণা থেকে দেখা যায় যে, ক্রোম খুব কমই স্বয়ংক্রিয়ভাবে ডেটা মুছে ফেলে। বরং ব্যবহারকারীরাই ম্যানুয়ালি স্টোরেজ খালি করে থাকেন। সুতরাং, যদি কোনো ব্যবহারকারী আপনার সাইট নিয়মিত ভিজিট করেন, তাহলে আপনার ডেটা মুছে যাওয়ার সম্ভাবনা খুবই কম। ব্রাউজারকে আপনার ডেটা মুছে ফেলা থেকে বিরত রাখতে, আপনি আপনার সম্পূর্ণ সাইটের স্টোরেজকে পারসিস্টেন্ট (persistent) হিসেবে চিহ্নিত করার জন্য অনুরোধ করতে পারেন।
অনেক আধুনিক ব্রাউজারে পারসিস্টেন্ট স্টোরেজ সমর্থিত ।
উচ্ছেদ, আপনি কী পরিমাণ ডেটা সংরক্ষণ করতে পারবেন এবং কোটার সীমাবদ্ধতা কীভাবে সামলাবেন সে সম্পর্কে আরও জানতে, ‘ওয়েবের জন্য স্টোরেজ’ দেখুন।
আপনার সাইটের স্টোরেজ স্থায়ী হিসেবে চিহ্নিত করা হয়েছে কিনা তা পরীক্ষা করুন।
আপনার সাইটের স্টোরেজকে পারসিস্টেন্ট হিসেবে চিহ্নিত করা হয়েছে কিনা, তা জানতে আপনি জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন। navigator.storage.persisted() কল করলে একটি Promise রিটার্ন হয়, যা একটি বুলিয়ান ভ্যালু দিয়ে রিজলভ হয় এবং তা নির্দেশ করে যে স্টোরেজটি পারসিস্টেড হিসেবে চিহ্নিত হয়েছে কিনা।
// Check if site's storage has been marked as persistent
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persisted();
console.log(`Persisted storage granted: ${isPersisted}`);
}
কখন আমার স্থায়ী স্টোরেজের জন্য অনুরোধ করা উচিত?
আপনার স্টোরেজকে স্থায়ী (পার্সিস্টেন্ট) হিসেবে চিহ্নিত করার অনুরোধ জানানোর সেরা সময় হলো যখন আপনি ব্যবহারকারীর গুরুত্বপূর্ণ ডেটা সংরক্ষণ করেন, এবং এই অনুরোধটি আদর্শগতভাবে ব্যবহারকারীর কোনো নির্দেশনার মধ্যে রাখা উচিত। পেজ লোড হওয়ার সময় বা অন্য কোনো বুটস্ট্র্যাপ কোডে স্থায়ী স্টোরেজের জন্য অনুরোধ করবেন না, কারণ ব্রাউজার ব্যবহারকারীর কাছে অনুমতি চাইতে পারে। যদি ব্যবহারকারী এমন কিছু না করেন যা তার মতে সংরক্ষণ করা প্রয়োজন, তবে এই অনুরোধটি বিভ্রান্তিকর হতে পারে এবং তিনি সম্ভবত অনুরোধটি প্রত্যাখ্যান করবেন। এছাড়াও, খুব ঘন ঘন অনুরোধ করবেন না। যদি ব্যবহারকারী অনুমতি না দেওয়ার সিদ্ধান্ত নেন, তবে পরবর্তী সংরক্ষণের সময় সাথে সাথে আবার অনুরোধ করবেন না।
স্থায়ী স্টোরেজের জন্য অনুরোধ করুন
আপনার সাইটের ডেটার জন্য স্থায়ী স্টোরেজ অনুরোধ করতে, navigator.storage.persist() কল করুন। এটি একটি Promise রিটার্ন করে যা একটি বুলিয়ান ভ্যালু দিয়ে রিজলভ হয়, এবং সেই ভ্যালুটি নির্দেশ করে যে স্থায়ী স্টোরেজের অনুমতি দেওয়া হয়েছে কি না।
// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persist();
console.log(`Persisted storage granted: ${isPersisted}`);
}
কীভাবে অনুমতি দেওয়া হয়?
স্থায়ী স্টোরেজকে একটি অনুমতি হিসেবে গণ্য করা হয়। ব্রাউজারগুলো স্থায়ী স্টোরেজের অনুমতি দেবে কি না, তা সিদ্ধান্ত নিতে বিভিন্ন বিষয় বিবেচনা করে।
ক্রোম এবং অন্যান্য ক্রোমিয়াম-ভিত্তিক ব্রাউজার
ক্রোম এবং বেশিরভাগ অন্যান্য ক্রোমিয়াম-ভিত্তিক ব্রাউজার স্বয়ংক্রিয়ভাবে অনুমতির অনুরোধটি পরিচালনা করে এবং ব্যবহারকারীকে কোনো প্রম্পট দেখায় না। এর পরিবর্তে, যদি কোনো সাইটকে গুরুত্বপূর্ণ বলে মনে করা হয়, তবে স্থায়ী স্টোরেজের অনুমতি স্বয়ংক্রিয়ভাবে মঞ্জুর করা হয়, অন্যথায় তা নীরবে প্রত্যাখ্যান করা হয়।
কোনো সাইট গুরুত্বপূর্ণ কিনা তা নির্ধারণ করার সাধারণ পদ্ধতিগুলো হলো:
- সাইটে অংশগ্রহণের মাত্রা কতটা?
- সাইটটি কি ইনস্টল বা বুকমার্ক করা হয়েছে?
- সাইটটিকে কি নোটিফিকেশন দেখানোর অনুমতি দেওয়া হয়েছে?
অনুরোধটি প্রত্যাখ্যাত হলে, পরবর্তীতে আবার অনুরোধ করা যাবে এবং একই মানদণ্ড ব্যবহার করে তার মূল্যায়ন করা হবে।
ফায়ারফক্স
ফায়ারফক্স অনুমতির অনুরোধটি ব্যবহারকারীর কাছে অর্পণ করে। যখন স্থায়ী স্টোরেজের জন্য অনুরোধ করা হয়, তখন এটি একটি UI পপআপের মাধ্যমে ব্যবহারকারীকে জিজ্ঞাসা করে যে, তারা সাইটটিকে স্থায়ী স্টোরেজে ডেটা সংরক্ষণ করার অনুমতি দেবে কিনা।

পারসিস্টেন্ট স্টোরেজ দ্বারা কোন স্টোরেজ সুরক্ষিত থাকে?
যদি স্থায়ী স্টোরেজের অনুমতি দেওয়া হয়, তাহলে ব্রাউজার এখানে সংরক্ষিত ডেটা মুছে ফেলবে না:
- ক্যাশে এপিআই
- কুকি
- DOM স্টোরেজ (স্থানীয় স্টোরেজ)
- ফাইল সিস্টেম এপিআই (ব্রাউজার-প্রদত্ত এবং স্যান্ডবক্সড ফাইল সিস্টেম)
- ইনডেক্সডডিবি
- পরিষেবা কর্মীরা
- অ্যাপ ক্যাশে (অপ্রচলিত, ব্যবহার করবেন না)
- WebSQL (অপ্রচলিত, ব্যবহার করবেন না)
স্থায়ী স্টোরেজ কীভাবে বন্ধ করবেন
বর্তমানে, ব্রাউজারকে এটা জানানোর কোনো প্রোগ্রাম্যাটিক উপায় নেই যে আপনার আর পারসিস্টেন্ট স্টোরেজের প্রয়োজন নেই।
উপসংহার
ক্রোম টিমের গবেষণা থেকে দেখা যায় যে, যদিও সম্ভব, সংরক্ষিত ডেটা ক্রোম দ্বারা স্বয়ংক্রিয়ভাবে মুছে ফেলা হয় না বললেই চলে। গুরুত্বপূর্ণ ডেটা সুরক্ষিত রাখতে, যা ক্লাউডে সংরক্ষিত নাও থাকতে পারে, বা যার ফলে বড় ধরনের ডেটা হারানোর ঝুঁকি থাকে, পারসিস্টেন্ট স্টোরেজ একটি সহায়ক উপায় হতে পারে। এটি নিশ্চিত করে যে, যখন স্থানীয় ডিভাইসে স্টোরেজের চাপ পড়ে, তখন ব্রাউজার আপনার ডেটা মুছে ফেলবে না। এবং মনে রাখবেন, শুধুমাত্র তখনই পারসিস্টেন্ট স্টোরেজের জন্য অনুরোধ করুন, যখন ব্যবহারকারীর এটি সবচেয়ে বেশি প্রয়োজন হওয়ার সম্ভাবনা থাকে।
ধন্যবাদ
এই নথিটি পর্যালোচনা করার জন্য ভিক্টর কস্টান এবং জো মেডলিকে বিশেষ ধন্যবাদ। ক্রিস উইলসনকেও ধন্যবাদ, যিনি এই নথিটির মূল সংস্করণটি লিখেছিলেন, যা প্রথম ওয়েবফান্ডামেন্টালস-এ প্রকাশিত হয়েছিল।