हर स्टोरेज एक जैसा नहीं होता: स्टोरेज बकेट की सुविधा शुरू की जा रही है

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

स्टोरेज स्टैंडर्ड से कौनसी समस्या हल होती है?

आम तौर पर, जब उपयोगकर्ता के डिवाइस का स्टोरेज खत्म हो जाता है, तो ऐसे एपीआई की मदद से सेव किया गया डेटा, जैसे कि उपयोगकर्ता के दखल देने के बिना, IndexedDB या localStorage खो जाता है. कमाई करने का बेहतर तरीका स्टोरेज को स्थायी तौर पर बनाए रखने के लिए, persist() तरीका StorageManager इंटरफ़ेस. वह असली उपयोगकर्ता से अनुमति मांगता है और एक बार मिल जाने के बाद, लगातार बने रहने वाला स्टोरेज:

const persisted = await navigator.storage.persist();
if (persisted) {
  /* Storage will not be cleared except by explicit user action. */
}

स्टोरेज को बनाए रखने के लिए कहने का यह तरीका, हो सकता है कि कुछ न हो या कुछ भी न हो. इससे ज़्यादा बताने का कोई तरीका नहीं है लंबे समय तक बने रहने की ज़रूरत है. ये सभी एक स्टोरेज बकेट हैं.

Storage बकेट एपीआई

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

इस्तेमाल के उदाहरण का उदाहरण

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

ईमेल ऐप्लिकेशन का इंटरफ़ेस
ईमेल ऐप्लिकेशन में इनबॉक्स और ड्राफ़्ट के लिए अलग-अलग स्टोरेज बकेट मौजूद हैं. (सिर्फ़ समझाने के मकसद से, यह ज़रूरी नहीं है कि इसमें Gmail के काम करने का तरीका दिखाया गया हो.)

Storage बकेट एपीआई का इस्तेमाल करना

नया स्टोरेज बकेट बनाना

StorageBucketManager पर open() तरीके का इस्तेमाल करके, एक नई स्टोरेज बकेट बनाई जा सकती है इंटरफ़ेस पर कॉपी करने की सुविधा मिलती है.

// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');

सेव की गई नई स्टोरेज बकेट बनाएं

यह पक्का करने के लिए कि स्टोरेज बकेट बनी रहे, आपके पास durability और persisted विकल्प को पास करने का विकल्प है open() विधि में आर्ग्युमेंट:

  • persisted तय करता है कि स्टोरेज बकेट को सेव रखना है या नहीं. स्वीकार की गई वैल्यू ये हैं false (डिफ़ॉल्ट) या true.
  • durability उस ब्राउज़र को संकेत देता है जो इसे पावर फ़ेल होने पर, डेटा खोने का जोखिम कम हो जाता है. 'relaxed' के लिए ही इस्तेमाल किए जा सकते हैं (डिफ़ॉल्ट) या 'strict':

    • 'strict' बकेट, पावर सप्लाई न होने पर डेटा के खोने के जोखिम को कम करने की कोशिश करती है. यह कम परफ़ॉर्मेंस की लागत आती है. इसका मतलब है कि कॉन्टेंट को पूरा होने में ज़्यादा समय लग सकता है. इससे सिस्टम की परफ़ॉर्मेंस का बेहतर डेटा मिलता है. साथ ही, बैटरी ज़्यादा खर्च हो सकती है और स्टोरेज डिवाइस खराब हो सकता है और तेज़ी से.
    • 'relaxed' बकेट "मिटाई" जा सकती है पिछले कुछ सेकंड में पूरा हुआ, जब बिजली चली जाती है. इसके बदले में, इन बकेट में डेटा लिखने से बेहतर परफ़ॉर्मेंस हो सकती है साथ ही, बैटरी के चार्ज होने और स्टोरेज को लंबे समय तक चलाने की सुविधा भी देता है. हमेशा के लिए डिवाइस. साथ ही, पावर सप्लाई में गड़बड़ी होने से, डेटा खराब नहीं होगा. 'strict' बकेट.
// Create a storage bucket for email drafts that only exist on the client.
const draftsBucket = await navigator.storageBuckets.open('drafts', {
  durability: 'strict', // Or `'relaxed'`.
  persisted: true, // Or `false`.
});

स्टोरेज बकेट से स्टोरेज एपीआई को ऐक्सेस करना

हर स्टोरेज बकेट, Storage के एपीआई से जुड़ी होती है. उदाहरण के लिए, IndexedDB, कैश इंटरफ़ेस या फ़ाइल इंटरफ़ेस. ये Storage API इस तरह काम करते हैं: आम तौर पर इस्तेमाल किया जाने वाला एंट्री पॉइंट, StorageBucket इंटरफ़ेस से लिया गया है. उदाहरण के लिए, StorageBucket.indexedDB.

const inboxDb = await new Promise(resolve => {
  const request = inboxBucket.indexedDB.open('messages');
  request.onupgradeneeded = () => { /* migration code */ };
  request.onsuccess = () => resolve(request.result);
  request.onerror = () => reject(request.error);
});

DevTools में स्टोरेज बकेट को डीबग करना

ऐप्लिकेशन में, खास ट्री में स्टोरेज बकेट की जांच करें > स्टोरेज सेक्शन.

स्टोरेज सेक्शन में, स्टोरेज बकेट ट्री को चालू करने से पहले और बाद में.

काम के संसाधन