Chrome में, ज़्यादा बेहतर IndexedDB स्टोरेज

Chrome में किए गए नए ऑप्टिमाइज़ेशन से, डिस्क पर IndexedDB डेटा को सेव करने के तरीके को बेहतर बनाया गया है. इस बेहतर सुविधा में, Chrome के स्टोरेज सिस्टम में बड़ी वैल्यू को मैनेज करने के तरीके पर फ़ोकस किया गया है. खास तौर पर, डिस्क पर सेव की गई कुछ फ़ाइलों को कंप्रेस करके. इस लेख में, इस अपडेट की खास बातों के बारे में बताया गया है.

Chrome के 129 वर्शन से पहले का स्टोरेज सिस्टम

Chrome, डिस्क पर IndexedDB डेटा को स्टोर करने के लिए LevelDB का इस्तेमाल करता है. LevelDB, की-वैल्यू स्टोरेज लाइब्रेरी है, जो तेज़ी से काम करती है. हालांकि, जब अलग-अलग वैल्यू, डेटाबेस पेज के साइज़ से ज़्यादा हो जाती हैं, तो इसमें समस्या आती है. इस समस्या को हल करने के लिए, 2017 से Chrome, डेटाबेस फ़ाइल के साथ-साथ डिस्क पर, एक पेज से बड़ी वैल्यू को प्लैन फ़ाइलों के तौर पर सेव करता है.

129 वर्शन से स्टोरेज

बड़ी वैल्यू को कंप्रेस करना

सीधे LevelDB डेटाबेस में सेव किए गए कॉन्टेंट के उलट, बड़ी फ़ाइलों को प्लैन फ़ाइलों के तौर पर सेव किया जाता है. इन्हें डिस्क में लिखने से पहले कंप्रेस किया जाता है और पढ़ने के बाद डिकंप्रेस किया जाता है. नए अपडेट के बाद, Chrome अब Snappy रीयल-टाइम कंप्रेसन लाइब्रेरी का इस्तेमाल करके, इन बड़ी फ़ाइलों को कंप्रेस करेगा. इससे, स्टोरेज में काफ़ी जगह बचेगी. यह खास तौर पर स्ट्रक्चर्ड डेटा के लिए असरदार है. जैसे, JavaScript वैल्यू, एक्सएमएल या JSON के बड़े कलेक्शन. यह उन मीडिया फ़ाइलों के लिए कारगर नहीं है जो बड़ी हैं, लेकिन पहले से ही कंप्रेस की गई हैं. इसके अलावा, अगर साइट पहले से ही खुद ही फ़ाइलों को ज़िप और अनज़िप करती है, तो भी यह सुविधा काम नहीं करती.

स्टोरेज की परफ़ॉर्मेंस पर असर

अगर कंप्रेस करने पर फ़ाइल का साइज़, LevelDB पेज के साइज़ से कम हो जाता है, तो डेटा को वापस LevelDB में ले जाया जाता है. इस बदलाव से, न सिर्फ़ जगह बचती है, बल्कि डिस्क के I/O ऑपरेशन भी कम हो जाते हैं. इससे, डिस्क की परफ़ॉर्मेंस बेहतर होती है.

Snappy कंप्रेसन एल्गोरिदम

Chrome की टीम ने डेटा को कम करने के लिए Snappy को चुना है, क्योंकि यह ज़्यादा से ज़्यादा डेटा को कम करने के बजाय, डेटा को कम समय में कम करने के लिए ऑप्टिमाइज़ करता है. यह इतना तेज़ है कि कंप्रेस या डिकंप्रेस करने के दौरान, परफ़ॉर्मेंस पर कोई असर नहीं पड़ता.

परफ़ॉर्मेंस में सुधार करना

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

डेवलपर और उपयोगकर्ता पर असर

ये बदलाव, डेवलपर और उपयोगकर्ताओं, दोनों के लिए पूरी तरह से पारदर्शी हैं. हालांकि, उपयोगकर्ताओं को परफ़ॉर्मेंस में सुधार और स्टोरेज के इस्तेमाल में कमी दिख सकती है.

  • डिवाइस में जगह बचाना: डेटा को छोटा करने की सुविधा, सिर्फ़ इस अपडेट के बाद सेव किए गए नए डेटा पर लागू होती है. navigator.storage.estimate() जैसे वेब एपीआई का इस्तेमाल करके, स्टोरेज में हुई बचत का पता लगाया जा सकता है. इसके अलावा, Chrome DevTools में ऐप्लिकेशन पैनल के स्टोरेज सेक्शन में भी इसकी जानकारी देखी जा सकती है.
  • सुविधा की जांच करना: डेवलपर, Chrome के रिलीज़ से पहले वाले वर्शन (129 से पहले के वर्शन) में इस सुविधा की जांच कर सकते हैं. इसके लिए, उन्हें फ़्लैग: --enable-features="IndexedDBCompressValuesWithSnappy" की मदद से सुविधा को चालू करना होगा.

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

आभार

इस दस्तावेज़ की समीक्षा इवान स्टैड और रेचल एंड्रयू ने की है.