ब्रॉटली

ब्रॉटली Google द्वारा विकसित एक दोषरहित संपीड़न है। यह सामान्य प्रयोजन LZ77 और LZ78 दोषरहित संपीड़न एल्गोरिथ्म, हफ़मैन कोडिंग और 2-ऑर्डर संदर्भ मॉडलिंग के संयोजन का उपयोग करता है। ब्रॉटली का उपयोग मुख्य रूप से वेब सर्वर और सामग्री वितरण नेटवर्क द्वारा HTTP संपीड़न के लिए किया जाता है, जिससे इंटरनेट वेबसाइटें तेजी से लोड होती हैं। gzip का उत्तराधिकारी, यह सभी प्रमुख वेब ब्राउज़रों द्वारा समर्थित है और तेजी से लोकप्रिय हो गया है, क्योंकि यह gzip की तुलना में बेहतर संपीड़न प्रदान करता है।

इतिहास
Google के कर्मचारियों जिरकी अलाकुइजाला और ज़ोल्टन स्ज़ाबादका ने शुरुआत में वेब ओपन फ़ॉन्ट प्रारूप वेब फ़ॉन्ट के प्रसारण के आकार को कम करने के लिए 2013 में ब्रॉटली विकसित किया था। अलाकुइजाला और स्ज़ाबादका ने 2013 के दौरान ब्रॉटली विनिर्देश पूरा किया–2016. विनिर्देश के साथ दो अतिरिक्त लेखकों, एवगेनी क्लिउचनिकोव और लॉड वांडेवेन द्वारा विकसित एक संदर्भ कार्यान्वयन भी शामिल था, जिन्होंने पहले 2013 में DEFLATE और gzip संगत संपीड़न के Google के zopfli कार्यान्वयन को विकसित किया था। ज़ोफ़्फ़्ली के विपरीत, जो मौजूदा डेटा प्रारूप विनिर्देश का पुन: कार्यान्वयन था, ब्रॉटली एक नया डेटा प्रारूप था और लेखकों को संपीड़न अनुपात को और भी बेहतर बनाने की अनुमति देता था।

HTTP स्ट्रीम संपीड़न (सामग्री-एन्कोडिंग प्रकार br) के लिए सितंबर 2015 में ब्रॉटली विनिर्देश को सामान्यीकृत किया गया था। इस सामान्यीकृत पुनरावृत्ति ने अक्सर उपयोग किए जाने वाले शब्दों और वाक्यांशों के पूर्वनिर्धारित शब्दकोश का उपयोग करके संपीड़न अनुपात में भी सुधार किया। Google सॉफ़्टवेयर इंजीनियरों द्वारा सितंबर 2015 में जारी किए गए ब्रॉटली के संस्करण में सामान्य दोषरहित डेटा संपीड़न में संवर्द्धन शामिल था, जिसमें HTTP संपीड़न के उपयोग पर विशेष जोर दिया गया था। एनकोडर को आंशिक रूप से फिर से लिखा गया था, जिसके परिणामस्वरूप संपीड़न अनुपात में सुधार हुआ, एनकोडर और डिकोडर दोनों में तेजी आई है, स्ट्रीमिंग एपीआई में सुधार हुआ है, और अधिक संपीड़न गुणवत्ता स्तर जोड़े गए हैं। इसके अतिरिक्त, नई रिलीज़ डिकोडिंग मेमोरी में कमी के साथ सभी प्लेटफार्मों पर प्रदर्शन में सुधार दिखाती है।

इंटरनेट इंजीनियरिंग टास्क फोर्स ने टिप्पणियों के लिए सूचनात्मक अनुरोध के रूप में ब्रॉटली संपीड़ित डेटा प्रारूप विनिर्देश को मंजूरी दे दी जुलाई 2016 में. ब्रॉटली डेटा प्रारूप वेब ओपन फ़ॉन्ट प्रारूप के दूसरे पुनरावृत्ति का एक अभिन्न अंग है, जिसे W3C में फ़ॉन्ट प्रौद्योगिकी मानकीकरण के लिए नेशनल एकेडमी ऑफ टेलीविज़न आर्ट्स एंड साइंसेज से 2021 प्रौद्योगिकी और इंजीनियरिंग एमी पुरस्कार में मान्यता दी गई थी। पिछले कुछ वर्षों में वेब ब्राउज़र में ब्रॉटली समर्थन जोड़ा गया है, जुलाई 2022 तक दुनिया भर के 96% उपयोगकर्ता इस प्रारूप का समर्थन करने वाले ब्राउज़र का उपयोग कर रहे हैं। 2016 में ड्रॉपबॉक्स ने दुर्भावनापूर्ण क्लाइंट के खिलाफ अधिक सुरक्षित होने की अपनी आवश्यकता को पूरा करने के लिए रस्ट में ब्रॉटली को फिर से लागू किया। 2018 में उन्होंने गायब सुविधा को लागू किया ताकि कोई व्यक्ति ब्रॉटली संपीड़ित फ़ाइल में जोड़ सके।

एल्गोरिथम
ब्रॉटली का नया फ़ाइल प्रारूप इसके लेखकों को कई एल्गोरिथम और प्रारूप-स्तरीय सुधारों द्वारा डिफ्लेट में सुधार करने की अनुमति देता है: शाब्दिक और प्रतिलिपि दूरी के लिए संदर्भ मॉडल का उपयोग, पिछली दूरी के माध्यम से प्रतिलिपि दूरी का वर्णन, एन्ट्रॉपी कोड चयन में मूव-टू-फ्रंट कतार का उपयोग, शाब्दिक और प्रतिलिपि लंबाई की संयुक्त-एन्ट्रॉपी कोडिंग, ब्लॉक विभाजन में ग्राफ़ एल्गोरिदम का उपयोग, और एक बड़ी बैकवर्ड संदर्भ विंडो उदाहरण सुधार हैं।

अधिकांश सामान्य प्रयोजन संपीड़न एल्गोरिदम के विपरीत, ब्रॉटली गतिशील रूप से पॉप्युलेट (स्लाइडिंग विंडो) शब्दकोश के अलावा, एक पूर्वनिर्धारित शब्दकोश का उपयोग करता है, जिसका आकार लगभग 120 KiB है। पूर्वनिर्धारित शब्दकोश में 13000 से अधिक सामान्य शब्द, वाक्यांश और पाठ और HTML दस्तावेज़ों के एक बड़े पाठ संग्रह से प्राप्त अन्य उपस्ट्रिंग शामिल हैं। पूर्वनिर्धारित शब्दकोश का उपयोग संपीड़न को बढ़ाने के लिए दिखाया गया है जहां फ़ाइल में अधिकतर आमतौर पर उपयोग किए जाने वाले शब्द होते हैं। हालाँकि, अलाकुइजाला के अनुसार, पूर्वनिर्धारित शब्दकोश ब्रॉटली की सामान्यता से विचलित नहीं होता है, और बेहतर संपीड़न का मुख्य कारण नहीं है। उनका दावा है कि ऑल-ज़ीरो डिक्शनरी के साथ ब्रॉटली एल्गोरिथम की प्रगति के कारण अभी भी वेब सामग्री पर अच्छा प्रदर्शन करता है। ब्रॉटली की स्लाइडिंग विंडो 16 MiB तक सीमित है। यह सीमित संसाधनों वाले मोबाइल फोन पर डिकोडिंग को सक्षम बनाता है, लेकिन बड़ी फ़ाइलों वाले संपीड़न बेंचमार्क पर ब्रॉटली को खराब प्रदर्शन देता है। छोटी विंडो आकार की बाधाओं को बड़ी विंडो ब्रॉटली का उपयोग करके कम किया जा सकता है, जो RFC7932 (ब्रॉटली उचित) के साथ संगत नहीं है।

नाम
जबकि Google के डिफ्लेट कंप्रेशन एल्गोरिदम के चोटी्लि कार्यान्वयन का नाम ज़ोपफ़ली के नाम पर रखा गया है, जो स्नैक-आकार के ज़ोपफ़ के लिए स्विस जर्मन शब्द है, ब्रोटली का नाम ब्रेड रोल #यूरोप के लिए स्विस जर्मन शब्द ब्रॉटली के नाम पर रखा गया है। Google का ब्रॉटली विनिर्देशन का कार्यान्वयन 2016 में अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस मेरा लाइसेंस की शर्तों के तहत जारी किया गया था। ब्रॉटली विनिर्देश का औपचारिक सत्यापन स्वतंत्र रूप से मार्क एडलर द्वारा कार्यान्वित किया गया था। zlib/gzip संपीड़न प्रारूप और लाइब्रेरी के सह-लेखकों में से एक। एडलर का कार्यान्वयन समान अनुमेय अपाचे लाइसेंस की शर्तों के तहत जारी किया गया था। विनिर्देश के अन्य कार्यान्वयन भी मौजूद हैं, जिनमें स्रोत-से-स्रोत  मिला हुआ  भाषा भी शामिल है।

अनुप्रयोग
ब्रॉटली संपीड़न का उपयोग आम तौर पर वेब पर gzip के विकल्प के रूप में किया जाता है, क्योंकि ब्रॉटली बेहतर समग्र संपीड़न प्रदान करता है। जीज़िप कम्प्रेशन की तुलना में, ब्रॉटली से संपीड़ित जावास्क्रिप्ट फ़ाइलें लगभग 15% छोटी होती हैं, HTML फ़ाइलें लगभग 20% छोटी होती हैं, और CSS फ़ाइलें लगभग 16% छोटी होती हैं। संदर्भ कार्यान्वयन एक कमांड-लाइन प्रोग्राम शिप करता है brotli के समान gzip, लेकिन यूनिक्स जैसी दुनिया में एक साधारण कंप्रेसर के रूप में इसका उपयोग दुर्लभ है। लिबर्चिव डेवलपर्स इसका कच्चा स्ट्रीम प्रारूप ढूंढते हैं  फ़ाइलों का समर्थन करना कठिन है, क्योंकि फ़ाइल प्रारूप को इंगित करने के लिए कोई जादुई संख्या (प्रोग्रामिंग) नहीं है।

ब्राउज़र और अन्य क्लाइंट

 * मोज़िला फ़ायरफ़ॉक्स ने संस्करण 44 (26 जनवरी 2016 को जारी) में बीआर सामग्री-एन्कोडिंग विधि के लिए समर्थन पेश किया।
 * Google Chrome ने संस्करण 50 (20 अप्रैल 2016 को जारी) से br सामग्री-एन्कोडिंग विधि का समर्थन किया है।
 * ओपेरा (वेब ​​​​ब्राउज़र) ने संस्करण 38 (8 जून 2016 को जारी) के बाद से बीआर सामग्री-एन्कोडिंग विधि का समर्थन किया है। * माइक्रोसॉफ्ट बढ़त  ने संस्करण 15 (5 अप्रैल 2017 को जारी) से बीआर सामग्री-एन्कोडिंग पद्धति का समर्थन किया है।
 * सफ़ारी (वेब ​​​​ब्राउज़र) ने संस्करण 11 (5 अक्टूबर 2017 को जारी) के बाद से बीआर सामग्री-एन्कोडिंग विधि का समर्थन किया है।
 * 29 नवंबर 2017 को जारी संस्करण 7.57 के अनुसार libbrotli का उपयोग करके br सामग्री-एन्कोडिंग विधि का समर्थन करने के लिए cURL के पास एक संकलन-समय विकल्प है।
 * 7zip, 7zip-zstd द्वारा ब्रॉटली के साथ विस्तारित रूप में उपलब्ध है।
 * पीज़िप संपीड़न और निष्कर्षण के लिए ब्रॉटली .BR प्रारूप का समर्थन करता है

वेब सर्वर

 * Apache HTTP सर्वर के लिए, br कंटेंट-एन्कोडिंग विधि को संस्करण 2.4.26 से mod_brotli मॉड्यूल द्वारा समर्थित किया गया है।
 * Microsoft IIS के पास मई 2018 से एक समर्थित एक्सटेंशन है जो br सामग्री-एन्कोडिंग विधि के लिए समर्थन जोड़ता है।
 * Microsoft Azure, brotli का उपयोग करके किनारे पर सामग्री को गतिशील रूप से संपीड़ित कर सकता है 17 अप्रैल, 2019 को लॉन्च होने के बाद से।
 * nginx के पास दिसंबर 2016 से Google द्वारा प्रदान किया गया एक ngx_brotli मॉड्यूल है।
 * Node.js में संस्करण 11.7.0 के बाद से एक अंतर्निहित देशी एन- और डिकोडर की सुविधा है, जिसका उपयोग br सामग्री-एन्कोडिंग का समर्थन करने के लिए किया जा सकता है।
 * अमेज़ॅन क्लाउडफ्रंट सितंबर 2020 तक ब्रॉटली का उपयोग करके किनारे पर कैश करने योग्य प्रतिक्रियाओं को स्वचालित रूप से संपीड़ित कर सकता है।
 * लाइटस्पीड वेब सर्वर ने जुलाई 2017 में संस्करण 5.2 के बाद से केवल स्थिर फ़ाइलों के लिए बीआर सामग्री-एन्कोडिंग विधि को शामिल किया है।
 * बादल भड़कना सीडीएन अपने एज नोड और उपयोगकर्ता के बीच डेटा को संपीड़ित करने के लिए एक ब्रॉटली विकल्प प्रदान करता है।
 * NaviServer ने संस्करण 4.99.17b1 में समर्थन जोड़ा
 * कैडी (वेब ​​​​सर्वर) 21 दिसंबर 2016 से संस्करण 0.9.4 के बाद से स्थिर रूप से संपीड़ित .br फ़ाइलें परोसता है।
 * lighttpd mod_deflate 1.4.56 से .br को सपोर्ट करता है नवंबर 2020 से.

संदर्भ

 * Notes



बाहरी संबंध

 * Brotli reference implementation at