स्टोरेज स्टैंडर्ड स्थायी स्टोरेज के लिए एपीआई के बारे में बताता है और कोटा के अनुमान, और प्लैटफ़ॉर्म स्टोरेज आर्किटेक्चर. हम एक एपीआई लॉन्च कर रहे हैं, ताकि स्टोरेज को लगातार खाली किया जा सके मेमोरी दबाव का अनुमान लगाया जा सकता है. यह 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 बकेट एपीआई
स्टोरेज बकेट एपीआई का मुख्य आइडिया यह है कि साइटों को कई स्टोरेज बकेट बनाने की सुविधा देना, जहां ब्राउज़र हर बकेट को अलग-अलग बकेट से अलग मिटाएं. इससे डेवलपर यह तय कर पाते हैं कि उन्हें बाहर निकालना है या नहीं प्राथमिकता तय करें.
इस्तेमाल के उदाहरण का उदाहरण
यह समझाने के लिए कि स्टोरेज बकेट कहाँ काम आ सकती है, एक ईमेल ऐप्लिकेशन की कल्पना करें. यह होगा अगर ऐप्लिकेशन, उपयोगकर्ता के ऐसे ड्राफ़्ट खो देता है जो सिर्फ़ क्लाइंट पर मौजूद होते हैं, तो उसे माफ़ नहीं किया जा सकेगा. इसके उलट, अगर अगर उन्हें सर्वर पर सेव किया जाता है, तो उपयोगकर्ता के लिए इनबॉक्स में मौजूद अपने सबसे पुराने ईमेल के साथ काम करना सही रहेगा अगर ब्राउज़र में स्टोरेज का बहुत ज़्यादा दबाव है, तो क्लाइंट से उसे हटाया जा सकता है.
![ईमेल ऐप्लिकेशन का इंटरफ़ेस](https://developer.chrome.com/static/docs/web-platform/storage-buckets/image/email-app-interface-174aa34e599a1.png?authuser=19&hl=hi)
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 में स्टोरेज बकेट को डीबग करना
ऐप्लिकेशन में, खास ट्री में स्टोरेज बकेट की जांच करें > स्टोरेज सेक्शन.