HTML5 ऑफ़लाइन मेमोरी प्रबंधित करना

HTML5 में कई स्टोरेज एपीआई मौजूद हैं. इनकी मदद से, उपयोगकर्ताओं के डिवाइस पर ज़्यादा डेटा स्टोर किया जा सकता है ब्राउज़र खोलें. हालांकि, डिफ़ॉल्ट रूप से हर ऐप्लिकेशन के लिए कुछ तय जगह मेगाबाइट. Google Chrome आपको 5 एमबी.

यह दस्तावेज़ आपको Chrome और Chrome में इस्तेमाल होने वाले स्टोरेज के टाइप से जुड़ी बुनियादी बातों के बारे में बताता है प्रयोग के तौर पर उपलब्ध कोटा मैनेजमेंट एपीआई के बारे में बताता है. इसकी मदद से, स्टोरेज कोटा मैनेज किया जा सकता है. कॉन्टेंट बनाने यह मान लिया गया है कि आपको क्लाइंट-साइड स्टोरेज के सामान्य कॉन्सेप्ट के बारे में पहले से पता है और ऑफ़लाइन एपीआई इस्तेमाल करने का तरीका जानें.

कॉन्टेंट

  1. स्टोरेज के टाइप
    1. अस्थायी रीडायरेक्ट
    2. लगातार
    3. अनलिमिटेड
    4. अलग-अलग तरह के स्टोरेज की तुलना करना
  2. अपना कोटा मैनेज करना
    1. क्वेरी स्टोरेज का इस्तेमाल और उपलब्धता
    2. ज़्यादा स्टोरेज मांगें
    3. टेस्टिंग का कोटा रीसेट करना
  3. एपीआई के बारे में जानकारी
    1. कॉन्सटेंट
    2. तरीका के बारे में खास जानकारी
    3. तरीके
  4. फ़्यूचर डेवलपमेंट

स्टोरेज के टाइप

Google Chrome में, तीन तरह का स्टोरेज मांगा जा सकता है:

नीचे दिए गए सेक्शन में, इस तरह के स्टोरेज के बारे में ज़्यादा जानकारी दी गई है. साथ ही, हर तरह के स्टोरेज की तुलना करने पर नीचे दी गई टेबल में अन्य.

अस्थायी स्टोरेज

अस्थायी स्टोरेज, थोड़े समय के लिए सेव किया जाने वाला स्टोरेज होता है. इसे किसी भी वेब ऐप्लिकेशन में देखा जा सकता है. Chrome अपने-आप आपके ऐप्लिकेशन का कुछ समय के लिए उपलब्ध स्टोरेज. इसलिए, आपको इसके बंटवारे का अनुरोध करने की ज़रूरत नहीं है.

पूल शेयर किया जा रहा है

अस्थायी स्टोरेज, ब्राउज़र में चल रहे सभी वेब ऐप्लिकेशन के साथ शेयर किया जाता है. शेयर किए गए पूल में, डिस्क में बचा स्टोरेज एक तिहाई हो सकता है. ऐप्स के लिए पहले से उपयोग की जा रही मेमोरी है शेयर किए गए पूल के कैलकुलेशन में शामिल किया गया है; इसका मतलब है कि कैलकुलेशन (available storage space + storage being used by apps) * .333

हर ऐप्लिकेशन में, शेयर किए जा सकने वाले पूल का 20% हिस्सा इस्तेमाल किया जा सकता है. उदाहरण के लिए, अगर डिस्क में कुल उपलब्ध स्टोरेज है शेयर किए जा सकने वाले पूल में 60 जीबी स्टोरेज, 20 जीबी स्टोरेज, और ऐप्लिकेशन में 4 जीबी स्टोरेज शामिल हो सकता है. इसका हिसाब लगाने के लिए 20% (ज़्यादा से ज़्यादा) उपलब्ध डिस्क स्टोरेज (60 जीबी) में से 1/3 (20 जीबी तक) में से 4 जीबी.

ज़्यादा स्टोरेज की मांग की जा रही है

हालांकि, आपके पास अपने ऐप्लिकेशन के लिए उपलब्ध स्टोरेज और स्टोरेज में कितनी जगह बची है, यह जानने के लिए क्वेरी की जा सकती है आपके ऐप्लिकेशन में पहले से सेव किया गया डेटा है, तो आप स्टोरेज के लिए ज़्यादा जगह नहीं मांग सकते. अगर कोई ऐप्लिकेशन तय कोटे से ज़्यादा हो जाने पर गड़बड़ी होती है.

स्टोरेज खत्म होने वाला है

पूरे पूल का स्टोरेज कोटा पार होने के बाद, कम से कम हाल ही में इस्तेमाल किया गया होस्ट मिटा दिया जाता है. हालांकि, ब्राउज़र LocalStorage में डेटा को नहीं मिटाएगा और सेशनस्टोरेज. अन्य ऑफ़लाइन एपीआई में सेव किए गए डेटा के लिए, ब्राउज़र पूरे डेटा को मिटाता है, न कि ताकि ऐप्लिकेशन के डेटा में कोई गड़बड़ी न हो.

हर ऐप्लिकेशन में पूल किए गए स्टोरेज का 20% तक हिस्सा इस्तेमाल किया जा सकता है. इसलिए, ऐप्लिकेशन को उपयोगकर्ता से सिर्फ़ तब मिटाया जा सकता है, जब पांच से ज़्यादा ऑफ़लाइन ऐप्लिकेशन चला रहे हैं. इनमें से हर ऐप्लिकेशन ज़्यादा स्टोरेज का इस्तेमाल कर रहा है.

हालांकि, जब उपयोगकर्ता अपनी हार्ड ड्राइव में ज़्यादा फ़ाइलें जोड़ते हैं, तो स्टोरेज के लिए बची जगह कम हो सकती है. जब डिस्क में खाली जगह कम हो जाती है (ध्यान रखें कि शेयर किए जा सकने वाले पूल में, मौजूदा स्टोरेज का आधा हिस्सा ही मिलता है डिस्क स्थान), ब्राउज़र सबसे कम हाल ही में उपयोग किए गए होस्ट के लिए संग्रहित सभी डेटा को हटा देता है.

स्थायी जगह

स्थायी स्टोरेज वह स्टोरेज है जो ब्राउज़र में तब तक रहता है, जब तक उपयोगकर्ता उसे मिटा नहीं देता. यह उपलब्ध है सिर्फ़ उन ऐप्लिकेशन के लिए जो फ़ाइल सिस्टम एपीआई का इस्तेमाल करते हैं. हालांकि, वे दूसरे ऑफ़लाइन एपीआई के लिए भी उपलब्ध होंगे जैसे कि IndexedDB और ऐप्लिकेशन की कैश मेमोरी.

किसी ऐप्लिकेशन में, अस्थायी स्टोरेज के मुकाबले स्थायी स्टोरेज का ज़्यादा कोटा हो सकता है, लेकिन आपको कोटा मैनेजमेंट एपीआई का इस्तेमाल करके, स्टोरेज का अनुरोध करें. साथ ही, उपयोगकर्ता को ज़्यादा स्टोरेज का इस्तेमाल करने की अनुमति देनी होगी स्पेस. Chrome में एक जानकारी बार दिखता है. इस बार में, उपयोगकर्ता को लोकल स्टोरेज के लिए ज़्यादा जगह देने के लिए कहा जाता है.

अनलिमिटेड स्टोरेज

अनलिमिटेड स्टोरेज, स्थायी स्टोरेज की तरह ही है. हालांकि, यह सिर्फ़ Chrome ऐप्लिकेशन और एक्सटेंशन (.crx फ़ाइलें). अनलिमिटेड स्टोरेज का साइज़, सिर्फ़ स्टोरेज की उपलब्धता के हिसाब से तय होता है उपयोगकर्ता के हार्ड ड्राइव में. इस आइटम के लिए, मेनिफ़ेस्ट फ़ाइल में unlimitedStorage की अनुमति मांगी जा सकती है ऐप्लिकेशन या एक्सटेंशन. इंस्टॉल करते समय, उपयोगकर्ता को यह सूचना दी जाती है कि इसके लिए ज़रूरी अनुमतियां देनी होंगी के तरीके का इस्तेमाल करते हैं. इंस्टॉल करने की प्रोसेस शुरू करने का मतलब है कि उपयोगकर्ता, साफ़ तौर पर इसके लिए अनुमति देता है ऐसे सभी पेज जिनके यूआरएल, Manifest.json फ़ाइल में मौजूद हैं.

ज़्यादा जानने के लिए, ऐप्लिकेशन और एक्सटेंशन से जुड़ी डेवलपर गाइड देखें.

अलग-अलग तरह के स्टोरेज की तुलना करना

नीचे दी गई टेबल में, स्टोरेज के तीन टाइप के बीच के अंतर के बारे में बताया गया है.

 अस्थायी स्टोरेजस्थायी जगहअनलिमिटेड स्टोरेज
बुनियादी जानकारी

अस्थायी स्टोरेज, जो किसी भी वेब ऐप्लिकेशन में उपलब्ध है.

यह प्रोसेस अपने-आप होती है और इसके लिए अनुरोध करने की ज़रूरत नहीं होती.

स्थायी स्टोरेज, जिसके लिए कोटा मैनेजमेंट एपीआई की मदद से अनुरोध करना होगा और उपयोगकर्ताओं को अनुमति देनी होगी.

Chrome एक्सटेंशन और ऐप्लिकेशन के लिए स्थायी स्टोरेज.

इसे मेनिफ़ेस्ट फ़ाइल में सेट किया जाता है और इसे उपयोगकर्ताओं से अनुमति मिलनी चाहिए.

उपलब्धता

सभी वेब ऐप्लिकेशन.

सभी वेब ऐप्लिकेशन.यह Chrome एक्सटेंशन के साथ-साथ होस्ट किए गए और इंस्टॉल किए गए वेब ऐप्लिकेशन के लिए खास होता है.
अनुमतिकोई नहीं. साफ़ तौर पर अनुरोध किए बिना इसका इस्तेमाल किया जा सकता है.

आपको कोटा मैनेजमेंट एपीआई का इस्तेमाल करके, ज़्यादा स्टोरेज का अनुरोध करना होगा.

ऐप्लिकेशन या एक्सटेंशन के लिए, मेनिफ़ेस्ट फ़ाइल में unlimitedStorage की अनुमति मांगी जा सकती है.
पहली बार इस्तेमाल करने पर उपयोगकर्ता अनुभवयह उपयोगकर्ता को नहीं दिखता. यह ऐप्लिकेशन काम करता रहता है.

Chrome पर एक जानकारी बार दिखता है. इसमें, उपयोगकर्ता को स्टोरेज का अनुरोध स्वीकार या अस्वीकार करने के लिए कहा जाता है.

हालांकि, अगर ऐप्लिकेशन के मौजूदा कोटे से कम कोटा है, तो कोई सूचना नहीं दिखती है. ज़्यादा बड़ा कोटा रखा जाता है.

इंस्टॉल करते समय, उपयोगकर्ता को ऐप्लिकेशन या एक्सटेंशन के लिए ज़रूरी अनुमतियों के बारे में सूचना दी जाती है. इंस्टॉल करने की प्रोसेस शुरू करने का मतलब है कि उपयोगकर्ता, साफ़ तौर पर उन सभी पेजों को अनुमति देता है जिनके यूआरएल, ऐप्लिकेशन या एक्सटेंशन के लिए Manifest.json फ़ाइल में दिए गए हैं.

स्टोरेज बढ़ाने के लिए, एक बार अनुरोध करने पर उपयोगकर्ता का अनुभवलागू नहीं. कुछ समय के लिए सेव किए गए स्टोरेज के लिए, अनुरोध नहीं किया जा सकता.

Chrome, उपयोगकर्ता को फिर से प्रॉम्प्ट देता है.

 

Chrome, इंस्टॉल होने के बाद लोगों को सूचना नहीं भेजता है. भले ही, ऐप्लिकेशन या एक्सटेंशन का कोटा बढ़ाने के अनुरोध क्यों न हों.
डेटा का रखरखाव

अस्थायी. ब्राउज़र डेटा को मिटा सकता है.

लगातार टैप करें. ब्राउज़र डेटा को तब तक नहीं मिटाता, जब तक उपयोगकर्ता उसे ऐसा करने का निर्देश न देता हो. डेटा बाद के ऐक्सेस में उपलब्ध है.

यह न सोचें कि डेटा हमेशा के लिए मौजूद है, क्योंकि उपयोगकर्ता इसे मिटा सकता है.

स्थायी स्टोरेज के बराबर.

 

डिफ़ॉल्ट स्टोरेज के लिए बची जगह

शेयर किए जा सकने वाले पूल का 20% तक इस्तेमाल किया जा सकता है.

0 एमबी. आपको स्टोरेज के लिए किसी खास जगह के लिए साफ़ तौर पर पूछना होगा.

0 एमबी. आपको मेनिफ़ेस्ट फ़ाइल में साफ़ तौर पर unlimitedStorage के लिए पूछना होगा.

अगर आपने स्टोरेज से जुड़ी ज़रूरी शर्तों की जानकारी नहीं दी है, तो Chrome, शेयर किए गए अस्थायी स्टोरेज के पूल से ऐप्लिकेशन को स्टोरेज असाइन कर देता है.

ज़्यादा से ज़्यादा स्टोरेजशेयर किए जा सकने वाले पूल का 20% तक इस्तेमाल किया जा सकता है.यह साइज़, हार्ड ड्राइव में खाली जगह के बराबर होना चाहिए. इसमें स्टोरेज का कोई तय पूल नहीं है.यह साइज़, हार्ड ड्राइव में खाली जगह के बराबर होना चाहिए.
इस्तेमाल का सुझाया गया उदाहरणकैश मेमोरी में सेव करना.ऐसे ऐप्लिकेशन जो ऑफ़लाइन काम करते हैं या जिनमें बहुत ज़्यादा ऐसेट होती हैं.ऐसे ऐप्लिकेशन जिन्हें Google Chrome में चलाने के लिए डिज़ाइन किया गया है.
इसका इस्तेमाल करने वाले एपीआई

ऑफ़लाइन एपीआई

ध्यान दें: LocalStorage और SessionStorage जैसे वेब स्टोरेज एपीआई, सिर्फ़ पांच एमबी पर ही काम करते हैं.

फ़ाइल सिस्टम एपीआई

ऑफ़लाइन एपीआई

  • ऐप्लिकेशन की कैश मेमोरी
  • फ़ाइल सिस्टम
  • IndexedDB
  • WebSQL (अब सेवा में नहीं है)

ध्यान दें: LocalStorage और SessionStorage जैसे वेब स्टोरेज एपीआई, सिर्फ़ पांच एमबी पर ही काम करते हैं.

अपना कोटा मैनेज करना

Chrome 13 में पेश किए गए कोटा मैनेजमेंट एपीआई की मदद से, ये काम किए जा सकते हैं:

एपीआई को ग्लोबल ऑब्जेक्ट window.webkitStorageInfo के साथ लागू किया गया है.

रेफ़रंस दस्तावेज़ के लिए, अगला सेक्शन देखें.

स्टोरेज के इस्तेमाल और उपलब्धता की क्वेरी की जा रही है

इस्तेमाल किए जा रहे स्टोरेज के साइज़ और होस्ट के लिए बची जगह के बारे में क्वेरी करने के लिए, कॉल करें queryUsageAndQuota() के साथ ये सुविधाएं मिलती हैं:

  • आपको किस तरह का स्टोरेज देखना है
  • सफलता कॉलबैक

ऐसा हो सकता है कि एपीआई की ओर से रिपोर्ट किया गया इस्तेमाल, उपयोगकर्ता के डेटा के असल साइज़ से मेल न खाए, क्योंकि हर स्टोरेज मेटाडेटा को सेव करने के लिए कुछ अतिरिक्त बाइट की ज़रूरत पड़ सकती है. साथ ही, स्थिति अपडेट होने में समय लग सकता है. इससे एपीआई, डिवाइस के स्टोरेज की हाल ही की स्थिति को नहीं दिखा रहा है.

यहां दिए गए कोड स्निपेट में, स्टोरेज के लिए बची जगह के बारे में सवाल पूछने का तरीका बताया गया है:

// Request storage usage and capacity left
// Choose either Temporary or Persistent
navigator.webkitTemporaryStorage.queryUsageAndQuota (
    function(usedBytes, grantedBytes) {
        console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
    },
    function(e) { console.log('Error', e);  }
);

अगर आपको स्थायी स्टोरेज की स्थिति के बारे में जानना है, तो webkitStorageInfo.TEMPORARY में webkitStorageInfo.PERSISTENT की सदस्यता लें. ईनम इसमें भी है window ऑब्जेक्ट (ग्लोबल नेमस्पेस), तो आप window.PERSISTENT और window.TEMPORARY.

ज़्यादा स्टोरेज चाहिए

आपको ज़्यादा स्टोरेज पाने का अनुरोध करने की ज़रूरत नहीं है, क्योंकि स्टोरेज को अपने-आप ही बांटा जाता है और आपको नहीं मिल सकता सीमा से बाहर है (जैसा कि टेबल में बताया गया है).

File System API के लिए स्थायी स्टोरेज का इस्तेमाल करने के लिए, डिफ़ॉल्ट कोटा 0 होता है. इसलिए, आपको साफ़ तौर पर अपने ऐप्लिकेशन के लिए मेमोरी का अनुरोध करें. requestQuota() को इन्हें कॉल करें:

  • स्टोरेज का टाइप
  • साइज़
  • सफलता कॉलबैक

आप जो मांग रहे हैं उसके आधार पर, ये चीज़ें हो सकती हैं:

  • अगर कोटा बढ़ाने का अनुरोध किया जाता है, तो ब्राउज़र उपयोगकर्ता को एक जानकारी बार दिखाता है. साथ ही, उपयोगकर्ता को कोटा बढ़ाने के लिए अनुमति दें या अस्वीकार करें. कुछ मामलों में, अनुरोध किए जाने पर कोई कार्रवाई नहीं की जा सकती अस्वीकार कर दिया जाता है, और मौजूदा कोटा या कम कोटा वापस मिल जाता है.
  • अगर आपका अनुरोध किया गया कोटा, ऐप्लिकेशन के मौजूदा बजट से कम है, तो कोई सूचना नहीं दिखती.
  • अगर आपने तय सीमा से ज़्यादा स्टोरेज का अनुरोध किया है, तो आपको गड़बड़ी का मैसेज (QUOTA_EXCEEDED_ERR) मिलेगा.
  • अगर उपयोगकर्ता की अनुमति मिलने के बाद, requestQuota() को फिर से कॉल किया जाता है, तो कुछ नहीं होगा. इसलिए, इस तरीके को दोबारा कॉल करने की कोई ज़रूरत नहीं है.

ज़्यादा स्टोरेज के लिए अनुरोध करने का तरीका यहां बताया गया है:

// Request Quota (only for File System API)
var requestedBytes = 1024*1024*10; // 10MB

navigator.webkitPersistentStorage.requestQuota (
    requestedBytes, function(grantedBytes) {
        window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);

    }, function(e) { console.log('Error', e); }
);
});

जांच के लिए कोटा रीसेट करना

अपने ऐप्लिकेशन के स्टोरेज की जांच करते समय, सेव किया गया डेटा मिटाया जा सकता है. इससे, अपने ऐप्लिकेशन में कोटा मैनेजमेंट की नई जांच करें. इसके लिए:

  1. खोज बार (पता बार) में chrome://settings/cookies डालें.
  2. अपना ऐप्लिकेशन खोजें.
  3. अपना ऐप्लिकेशन चुनें.
  4. हाइलाइट किए गए विकल्प की दाईं ओर मौजूद X पर क्लिक करें.

एपीआई का संदर्भ

इस सेक्शन में, कोटा मैनेजमेंट एपीआई के तरीकों की जानकारी दी गई है.

स्थिरांक

यहां webkitStorageInfo कॉन्सटेंट दिए गए हैं, जो स्टोरेज के टाइप के बारे में बताते हैं.

स्थिरमानब्यौरा
TEMPORARY0अस्थायी स्टोरेज.
PERSISTENT1स्थायी जगह.

तरीके की खास जानकारी

queryUsageAndQuota
requestQuota

तरीके

queryUsageAndQuota

इस्तेमाल किए जा रहे स्टोरेज के साइज़ और होस्ट के लिए बची हुई जगह की जांच करें.

 // you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
      successCallback,
      errorCallback);
  • successCallback: दो पैरामीटर के साथ वैकल्पिक कॉलबैक:

    • ऐप्लिकेशन, फ़िलहाल कितनी बाइट इस्तेमाल कर रहा है.
    • कोटा में बचे बाइट की संख्या.
  • errorCallback: गड़बड़ी का कॉलबैक वैकल्पिक.

requestQuota

ज़्यादा स्टोरेज मांगें. ब्राउज़र एक सूचना बार दिखाता है. इसमें, उपयोगकर्ता को यह सूचना देने के लिए कहा जाता है कि ऐप्लिकेशन को आपके पास ज़्यादा स्टोरेज होने की अनुमति नहीं है.

 // you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
      newQuotaInBytes,
      quotaCallback,
      errorCallback);
पैरामीटर
  • newQuotaInBytes: बाइट की वह संख्या जो आपको अपने स्टोरेज कोटा में चाहिए.
  • successCallback: वैकल्पिक कॉलबैक जो दिए गए बाइट की संख्या को पास करता है.
  • errorCallback: गड़बड़ी का कॉलबैक वैकल्पिक.

फ़्यूचर डेवलपमेंट

हमारी योजना सभी HTML5 ऑफ़लाइन स्टोरेज एपीआई को शामिल करने की है. इसमें IndexedDB, ऐप्लिकेशन कैश, फ़ाइल भी शामिल है सिस्टम, और अन्य एपीआई जिन्हें कोटा के तहत तय किया जा सकता है मैनेजमेंट एपीआई. इसके साथ, आपके पास असाइन किए गए सभी स्टोरेज को मैनेज करने का विकल्प होगा.