लगातार स्टोरेज की सुविधा से, अहम डेटा को खाली होने से बचाया जा सकता है और डेटा के खोने की संभावना कम की जा सकती है.
डिस्क में कम जगह जैसी स्टोरेज की समस्या होने पर, ब्राउज़र आम तौर पर कैश मेमोरी एपीआई और 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 उपयोगकर्ता को अनुमति अनुरोध सौंपता है. जब स्थायी स्टोरेज का अनुरोध किया जाता है, तो उपयोगकर्ता को यूज़र इंटरफ़ेस (यूआई) पॉप-अप दिखता है. इस पॉप-अप में पूछा जाता है कि क्या वह साइट को परसिस्टेंट स्टोरेज में डेटा सेव करने की अनुमति देगा.
![जब कोई साइट स्थायी स्टोरेज का अनुरोध करती है, तो Firefox की ओर से एक पॉप-अप दिखाया जाता है.](https://web.dev/static/articles/persistent-storage/image/a-popup-shown-firefox-a-c1a6b170da587.jpg?authuser=6&hl=hi)
स्थायी स्टोरेज की मदद से, कौनसे स्टोरेज को सुरक्षित रखा जाता है?
अगर स्थायी स्टोरेज की अनुमति दी जाती है, तो ब्राउज़र यहां सेव किए गए डेटा को नहीं हटाएगा:
- कैश एपीआई
- कुकी
- DOM स्टोरेज (लोकल स्टोरेज)
- File System API (ब्राउज़र से मिला और सैंडबॉक्स किया गया फ़ाइल सिस्टम)
- IndexedDB
- सर्विस वर्कर
- ऐप्लिकेशन की कैश मेमोरी (अब सेवा में नहीं है, इसका इस्तेमाल नहीं किया जाना चाहिए)
- WebSQL (अब सेवा में नहीं है, इसका इस्तेमाल नहीं किया जाना चाहिए)
स्थायी स्टोरेज को बंद करने का तरीका
फ़िलहाल, ब्राउज़र को यह बताने का कोई प्रोग्रामैटिक तरीका नहीं है कि अब आपको परसिस्टेंट स्टोरेज की ज़रूरत नहीं है.
नतीजा
Chrome टीम की रिसर्च से पता चलता है कि हालांकि संभव होता है, लेकिन सेव किए गए डेटा को Chrome अपने-आप ही मिटा देता है. स्थायी जगह के इस्तेमाल से, ऐसे ज़रूरी डेटा को सुरक्षित रखने में मदद मिलती है जो क्लाउड में सेव न हो या जिससे डेटा का काफ़ी नुकसान हो. याद रखें, स्थायी स्टोरेज का अनुरोध सिर्फ़ तब करें, जब उपयोगकर्ता को इसकी ज़रूरत न हो.
धन्यवाद
इस लेख की समीक्षा करने के लिए, विक्टर कोस्टन और जो मेडली को विशेष धन्यवाद. इस लेख के ओरिजनल वर्शन को लिखने वाले क्रिस विल्सन को धन्यवाद. यह लेख पहली बार WebFundamentals पर मौजूद था.
Unस्प्लैश पर Umberto की हीरो इमेज