स्थायी स्टोरेज की मदद से, अहम डेटा को मिटने से बचाया जा सकता है. साथ ही, डेटा खोने की संभावना को कम किया जा सकता है.
जब डिस्क में जगह कम होने जैसी स्टोरेज से जुड़ी समस्या आती है, तो ब्राउज़र आम तौर पर डेटा मिटा देते हैं. इसमें Cache API और IndexedDB का डेटा भी शामिल होता है. ब्राउज़र, सबसे कम इस्तेमाल किए गए ऑरिजिन का डेटा मिटाते हैं. अगर ऐप्लिकेशन ने सर्वर के साथ डेटा सिंक नहीं किया है, तो डेटा खो सकता है. साथ ही, ऐप्लिकेशन के काम करने के लिए ज़रूरी संसाधन हटाने से, ऐप्लिकेशन की विश्वसनीयता कम हो सकती है. इन दोनों वजहों से, उपयोगकर्ताओं को खराब अनुभव मिल सकता है.
अच्छी बात यह है कि Chrome टीम के रिसर्च से पता चलता है कि Chrome, डेटा को बहुत कम मामलों में अपने-आप मिटाता है. ज़्यादातर मामलों में, उपयोगकर्ता खुद ही स्टोरेज से डेटा मिटाते हैं. इसलिए, अगर कोई उपयोगकर्ता आपकी साइट पर नियमित तौर पर आता है, तो इस बात की संभावना कम है कि आपका डेटा मिटेगा. ब्राउज़र को आपका डेटा मिटाने से रोकने के लिए, अनुरोध किया जा सकता है कि आपकी पूरी साइट के स्टोरेज को स्थायी के तौर पर मार्क किया जाए.
स्थायी स्टोरेज की सुविधा, कई मॉडर्न ब्राउज़र में उपलब्ध है.
डेटा मिटाने की प्रोसेस, सेव किए जा सकने वाले डेटा की सीमा, और कोटे की पाबंदियों को मैनेज करने के तरीके के बारे में ज़्यादा जानने के लिए, वेब के लिए स्टोरेज लेख पढ़ें.
यह देखना कि आपकी साइट के स्टोरेज को स्थायी के तौर पर मार्क किया गया है या नहीं
यह पता लगाने के लिए कि आपकी साइट के स्टोरेज को स्थायी के तौर पर मार्क किया गया है या नहीं, JavaScript का इस्तेमाल किया जा सकता है. navigator.storage.persisted() को कॉल करने पर, एक प्रॉमिस मिलता है. यह प्रॉमिस, बूलियन वैल्यू के साथ रिज़ॉल्व होता है. इससे पता चलता है कि स्टोरेज को स्थायी के तौर पर मार्क किया गया है या नहीं.
// 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() को कॉल करें. इससे एक प्रॉमिस मिलता है. यह प्रॉमिस, बूलियन वैल्यू के साथ रिज़ॉल्व होता है. इससे पता चलता है कि स्थायी स्टोरेज की अनुमति दी गई है या नहीं.
// Request persistent storage for site
if (navigator.storage && navigator.storage.persist) {
const isPersisted = await navigator.storage.persist();
console.log(`Persisted storage granted: ${isPersisted}`);
}
अनुमति कैसे दी जाती है?
स्थायी स्टोरेज को अनुमति के तौर पर माना जाता है. ब्राउज़र, स्थायी स्टोरेज की अनुमति देने के बारे में फ़ैसला लेने के लिए, अलग-अलग फ़ैक्टर का इस्तेमाल करते हैं.
Chrome और Chromium पर आधारित अन्य ब्राउज़र
Chrome और Chromium पर आधारित ज़्यादातर अन्य ब्राउज़र, अनुमति के अनुरोध को अपने-आप मैनेज करते हैं. साथ ही, उपयोगकर्ता को कोई प्रॉम्प्ट नहीं दिखाते. इसके बजाय, अगर किसी साइट को अहम माना जाता है, तो स्थायी स्टोरेज की अनुमति अपने-आप मिल जाती है. ऐसा न होने पर, अनुमति नहीं मिलती है.
यह तय करने के लिए कि कोई साइट अहम है या नहीं, इन यूरीस्टिक का इस्तेमाल किया जाता है:
- साइट पर उपयोगकर्ता का जुड़ाव कितना है?
- क्या साइट इंस्टॉल की गई है या उसे बुकमार्क किया गया है?
- क्या साइट को सूचनाएं दिखाने की अनुमति दी गई है?
अगर अनुरोध अस्वीकार कर दिया गया है, तो बाद में फिर से अनुरोध किया जा सकता है. इसका आकलन, इन्हीं यूरीस्टिक का इस्तेमाल करके किया जाएगा.
Firefox
Firefox, अनुमति के अनुरोध को उपयोगकर्ता को सौंप देता है. स्थायी स्टोरेज का अनुरोध करने पर, यह उपयोगकर्ता को यूआई पॉप-अप दिखाता है. इसमें उपयोगकर्ता से पूछा जाता है कि क्या वह साइट को स्थायी स्टोरेज में डेटा सेव करने की अनुमति देगा.
स्थायी स्टोरेज की मदद से, किस स्टोरेज को सुरक्षित किया जाता है?
अगर स्थायी स्टोरेज की अनुमति दी जाती है, तो ब्राउज़र इनमें सेव किए गए डेटा को नहीं मिटाएगा:
- Cache API
- कुकी
- डीओएम स्टोरेज (लोकल स्टोरेज)
- File System API (ब्राउज़र से मिला और सैंडबॉक्स वाला फ़ाइल सिस्टम)
- IndexedDB
- सर्विस वर्कर
- ऐप्लिकेशन कैश (अब इस्तेमाल नहीं किया जाता, इसका इस्तेमाल न करें)
- WebSQL (अब इस्तेमाल नहीं किया जाता, इसका इस्तेमाल न करें)
स्थायी स्टोरेज की सुविधा बंद करने का तरीका
फ़िलहाल, ब्राउज़र को यह बताने का कोई प्रोग्रामैटिक तरीका नहीं है कि अब आपको स्थायी स्टोरेज की ज़रूरत नहीं है.
नतीजा
Chrome टीम के रिसर्च से पता चलता है कि Chrome, सेव किए गए डेटा को बहुत कम मामलों में अपने-आप मिटाता है. हालांकि, ऐसा हो सकता है. अहम डेटा को सुरक्षित रखने के लिए, स्थायी स्टोरेज एक काम का टूल साबित हो सकता है. ऐसा डेटा जो क्लाउड पर सेव नहीं किया जा सकता या जिसकी वजह से डेटा खोने की संभावना ज़्यादा है. स्थायी स्टोरेज की मदद से, यह पक्का किया जा सकता है कि लोकल डिवाइस में स्टोरेज से जुड़ी समस्या आने पर, ब्राउज़र आपका डेटा न मिटाए. ध्यान रखें कि स्थायी स्टोरेज के लिए सिर्फ़ तब अनुरोध करें, जब उपयोगकर्ता को इसकी ज़रूरत हो.
धन्यवाद
इस दस्तावेज़ की समीक्षा करने के लिए, विक्टर कोस्टन और जो मेडली का खास तौर पर धन्यवाद. इस दस्तावेज़ का ओरिजनल वर्शन लिखने के लिए, क्रिस विल्सन का धन्यवाद. यह वर्शन, सबसे पहले WebFundamentals पर पब्लिश हुआ था.