IndexedDB के डिफ़ॉल्ट ईको-फ़्रेंडली मोड में बदलाव

थॉमस स्टेनर
थॉमस स्टेनर

IndexedDB में डिफ़ॉल्ट टिकाऊ मोड को Chrome 121 से strict से बदलकर relaxed किया जा रहा है. यह बदलाव परफ़ॉर्मेंस को बेहतर बनाने और Firefox और Safari जैसे दूसरे मुख्य ब्राउज़र के साथ अलाइन करने के लिए किया जाता है. इस ब्लॉग पोस्ट में, इस बदलाव के बारे में जानकारी दी गई है. साथ ही, वेब डेवलपर पर लागू होने वाले असर के बारे में भी बताया गया है.

IndexedDB टिकाऊ मोड

IndexedDB, ज़्यादा मात्रा में स्ट्रक्चर्ड डेटा को स्टोर करने वाला एक दमदार वेब एपीआई है. यह readwrite लेन-देन के लिए, दो टिकाऊपन मोड ऑफ़र करता है:

  • strict: यह मोड ओएस को, complete इवेंट जारी करने से पहले, डिस्क में किए गए बदलावों को फ़्लश करने का निर्देश देता है.
  • relaxed यह मोड, ओएस की डिफ़ॉल्ट फ़्लशिंग के व्यवहार पर निर्भर करता है और ओएस बफ़र में बदलाव करने के बाद complete इवेंट को जारी करता है, जो आम तौर पर हर कुछ सेकंड में फ़्लश होता है.

ध्यान दें कि strict यह पक्का नहीं करता कि बदलाव असल में डिस्क में तुरंत लिखे गए हैं या नहीं. जब कोई साइट put() को कॉल करती है, तब भी कुछ समय हो सकता है. इस दौरान, हो सकता है कि पावर सप्लाई खराब होने की वजह से, बदलाव डिस्क पर न चले. इसलिए, अगली बार ऐप्लिकेशन चलाने पर यह उपलब्ध नहीं रहेगा.

डेटा के strict के टिकाऊ होने की गारंटी देने पर, IndexedDB लेन-देन complete इवेंट तब तक ट्रिगर नहीं होता है, जब तक डेटा लिखा जाने के बाद नहीं होता. वहीं, relaxed के टिकाऊ होने पर, complete इवेंट के फ़ायर होने के दौरान डेटा लिखने की प्रोसेस के दौरान ही ट्रिगर होता है. (पूरी प्रोसेस के बारे में ज़्यादा जानने के लिए, जानकारी देने वाला यह वीडियो देखें).

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

लंबे समय तक चलने वाले मोड में डिफ़ॉल्ट रूप से बदलाव किया गया

इस बदलाव का अहम पहलू, Chrome में readwrite लेन-देन के लिए, डिफ़ॉल्ट तौर पर टिकाऊ मोड है. अब तक, डिफ़ॉल्ट तौर पर strict तय था. इसलिए, डेटा में बदलाव के लिए, डिस्क को तुरंत लिखा जाता था. हालांकि, परफ़ॉर्मेंस के हिसाब से और relaxed का इस्तेमाल करने वाले दूसरे मुख्य ब्राउज़र के साथ अलाइन करने के लिए, Chrome को डिफ़ॉल्ट रूप से relaxed में बदलने की योजना है.

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

  • गति—असल दुनिया के उदाहरणों में, Chrome टीम ने 3 से 30 के कारक के बीच गति में सुधार देखा.
  • डिस्क के टिकाऊ होने की जानकारी, खास तौर पर सॉलिड स्टेट डिस्क (एसएसडी) वाले डिवाइसों के लिए.
  • बढ़ा हुआ बैटरी जीवनकाल.
  • पढ़ने की स्पीड में सुधार. IndexedDB के आर्किटेक्चर की वजह से, जहां रीड ट्रांज़ैक्शन को अक्सर लिखने से पहले ब्लॉक कर दिया जाता है, पढ़ने की स्पीड सेकंडरी इफ़ेक्ट के तौर पर बेहतर होती है.
  • पूरे डिवाइस पर सकारात्मक असर पड़ा है, क्योंकि डिस्क ऑपरेशन एक शेयर किए गए सिस्टम संसाधन हैं.

इंटरोऑपरेबिलिटी और कम्पैटबिलटी

इस बदलाव का एक अहम पहलू यह है कि इसकी इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करने की क्षमता) और इसके साथ काम करने की क्षमता पर इसका असर पड़ता है. अन्य ब्राउज़र वेंडर के व्यवहार के साथ अलाइन होकर, Chromium इंटरऑपरेबिलिटी को बेहतर बनाता है. स्टैंडर्ड तरीके से ही अलग-अलग तरीके लागू किए जा सकते हैं और इस बदलाव का मकसद, एक जैसा लागू करना है. इस बदलाव के बारे में ज़्यादा पुरानी जानकारी, GitHub की इस समस्या में मिल सकती है.

वेब डेवलपर पर इसका क्या असर होगा?

इस बदलाव में कोई नया एपीआई प्लैटफ़ॉर्म नहीं है. मौजूदा IndexedDB API पहले जैसा ही रहेगा. साथ ही, इस बदलाव से मुख्य तौर पर, readwrite ट्रांज़ैक्शन के डिफ़ॉल्ट व्यवहार पर असर पड़ता है. लेन-देन करते समय, आपके पास यह तय करने का विकल्प होता है कि डेटा को कितने समय तक इस्तेमाल किया जा सकता है. इससे आपको डेटा के रखरखाव और परफ़ॉर्मेंस पर पूरा कंट्रोल मिलता है. यहां दिए गए कोड सैंपल में बताया गया है कि वैकल्पिक विकल्पों के कलेक्शन में, durability को strict पर सेट करके, पुरानी कार्रवाई कैसे वापस पाएं.

let db;
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = (event) => {
  db = DBOpenRequest.result;
};
const transaction = db.transaction(
  ['toDoList'],
  'readwrite',
  { durability: 'strict' });

शिप करने से पहले, बदलाव की स्थानीय तौर पर जांच की जा रही है

यह बदलाव Chrome 121 से लागू होगा. अगर आपको पहले स्थानीय तौर पर, नई सुविधा की जांच करनी है, तो chrome://flags में #indexed-db-default-durability-relaxed फ़्लैग को टॉगल करें.

ज़्यादा जानें

इस बदलाव की ज़्यादा तकनीकी जानकारी और अपडेट पाने के लिए, गड़बड़ी को ट्रैक करना और Chrome प्लैटफ़ॉर्म की स्थिति देखें.

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

स्वीकार हैं

इस लेख की समीक्षा ईवन स्टैड और रेचल एंड्रू ने की है.