ब्रॉटली

From Vigyanwiki
Original author(s)Jyrki Alakuijala, Zoltán Szabadka
Developer(s)Jyrki Alakuijala, Eugene Kliuchnikov, Robert Obryk, Zoltán Szabadka, Lode Vandevenne
Initial release15 October 2013; 10 years ago (2013-10-15)
Stable release
1.0.9 / 27 August 2020; 3 years ago (2020-08-27)[1]
Written inC
Operating systemCross-platform
PlatformPortable
TypeData compression
LicenseMIT License

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

इतिहास

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

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

इंटरनेट इंजीनियरिंग टास्क फोर्स ने टिप्पणियों के लिए सूचनात्मक अनुरोध के रूप में ब्रॉटली संपीड़ित डेटा प्रारूप विनिर्देश को स्वीकृति दे दी (RFC 7932) जुलाई 2016 में.[5] ब्रॉटली डेटा प्रारूप वेब ओपन फ़ॉन्ट प्रारूप के दूसरे पुनरावृत्ति का एक अभिन्न अंग है,[5]: 3  जिसे W3C में फ़ॉन्ट प्रौद्योगिकी मानकीकरण के लिए नेशनल एकेडमी ऑफ टेलीविज़न आर्ट्स एंड साइंसेज से 2021 प्रौद्योगिकी और इंजीनियरिंग एमी पुरस्कार में मान्यता दी गई थी।[6][7]

पिछले कुछ वर्षों में वेब ब्राउज़र में ब्रॉटली समर्थन जोड़ा गया है, जुलाई 2022 तक विश्व भर के 96% उपयोगकर्ता इस प्रारूप का समर्थन करने वाले ब्राउज़र का उपयोग कर रहे हैं।[8]

2016 में ड्रॉपबॉक्स ने दुर्भावनापूर्ण क्लाइंट के विपरीत अधिक सुरक्षित होने की अपनी आवश्यकता को पूरा करने के लिए रस्ट में ब्रॉटली को फिर से प्रयुक्त किया। 2018 में उन्होंने विलुप्त सुविधा को प्रयुक्त किया जिससे कोई व्यक्ति ब्रॉटली संपीड़ित फ़ाइल में जोड़ सकते है।[9][10][11]


एल्गोरिथम

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

अधिकांश सामान्य प्रयोजन संपीड़न एल्गोरिदम के विपरीत, ब्रॉटली गतिशील रूप से पॉप्युलेट (स्लाइडिंग विंडो) शब्दकोश के अतिरिक्त , एक पूर्वनिर्धारित शब्दकोश का उपयोग करता है, जिसका आकार लगभग 120 केआईबी है। पूर्वनिर्धारित शब्दकोश में 13000 से अधिक सामान्य शब्द, वाक्यांश और टेक्स्ट और एचटीएमएल दस्तावेज़ों के एक बड़े टेक्स्ट संग्रह से प्राप्त अन्य उपस्ट्रिंग सम्मिलित हैं।[12][3] पूर्वनिर्धारित शब्दकोश का उपयोग संपीड़न को बढ़ाने के लिए दिखाया गया है जहां फ़ाइल में अधिकतर समान्यत: उपयोग किए जाने वाले शब्द होते हैं।[13] चूँकि, अलाकुइजाला के अनुसार, पूर्वनिर्धारित शब्दकोश ब्रॉटली की सामान्यता से विचलित नहीं होता है, और उत्तम संपीड़न का मुख्य कारण नहीं है। उनका प्रमाण है कि ऑल-ज़ीरो डिक्शनरी के साथ ब्रॉटली एल्गोरिथम की प्रगति के कारण अभी भी वेब कंटेंट पर अच्छा प्रदर्शन करता है।[14]

ब्रॉटली की स्लाइडिंग विंडो 16 MiB तक सीमित है। यह सीमित संसाधनों वाले मोबाइल फोन पर डिकोडिंग को सक्षम बनाता है, किन्तु बड़ी फ़ाइलों वाले संपीड़न बेंचमार्क पर ब्रॉटली को व्यर्थ प्रदर्शन देता है। छोटी विंडो आकार की बाधाओं को बड़ी विंडो ब्रॉटली का उपयोग करके कम किया जा सकता है, जो RFC7932 (ब्रॉटली उचित) के साथ संगत नहीं है।[15]


नाम

जबकि गूगल के डिफ्लेट कंप्रेशन एल्गोरिदम के ज़ोपफ़्लि कार्यान्वयन का नाम ज़ोपफ़ली के नाम पर रखा गया है, जो स्नैक-आकार के ज़ोपफ़ के लिए स्विस जर्मन शब्द है, ब्रोटली का नाम ब्रेड रोल या यूरोप के लिए स्विस जर्मन शब्द ब्रॉटली के नाम पर रखा गया है।[4] गूगल का ब्रॉटली विनिर्देशन का कार्यान्वयन 2016 में अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस माय लाइसेंस की नियमों के अनुसार जारी किया गया था। ब्रॉटली विनिर्देश का औपचारिक सत्यापन स्वतंत्र रूप से मार्क एडलर द्वारा कार्यान्वित किया गया था।[5]: 126  ज़्लिब/गज़िप संपीड़न प्रारूप और लाइब्रेरी के सह-लेखकों में से एक एडलर का कार्यान्वयन समान अनुमेय अपाचे लाइसेंस की नियमों के अनुसार जारी किया गया था।[16] विनिर्देश के अन्य कार्यान्वयन भी उपस्थित हैं, जिनमें स्रोत-से-स्रोत मिला हुआ लैंग्वेज भी सम्मिलित है।

अनुप्रयोग

ब्रॉटली संपीड़न का उपयोग सामान्यतः वेब पर गज़िप के विकल्प के रूप में किया जाता है, क्योंकि ब्रॉटली उत्तम समग्र संपीड़न प्रदान करता है।[17] जीज़िप कम्प्रेशन की तुलना में, ब्रॉटली से संपीड़ित जावास्क्रिप्ट फ़ाइलें लगभग 15% छोटी होती हैं, एचटीएमएल फ़ाइलें लगभग 20% छोटी होती हैं, और CSS फ़ाइलें लगभग 16% छोटी होती हैं।[18]

संदर्भ कार्यान्वयन gzip [19] के समान एक कमांड-लाइन प्रोग्राम brotli शिप करता है किन्तु यूनिक्स जैसी दुनिया में एक साधारण कंप्रेसर के रूप में उपयोग दुर्लभ है। लिबर्चिव डेवलपर्स को .br फ़ाइलों के रॉ स्ट्रीम प्रारूप का समर्थन करना मुश्किल लगता है, क्योंकि फ़ाइल प्रारूप को निरुपित करने के लिए कोई जादुई संख्या नहीं है[20]


इंडस्ट्री समर्थन

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

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


वेब सर्वर

  • अपाचे एचटीटीपी सर्वर के लिए, br कंटेंट-एन्कोडिंग विधि को संस्करण 2.4.26 से mod_brotli मॉड्यूल द्वारा समर्थित किया गया है।[27]
  • माइक्रोसॉफ्ट आईआईएस के पास मई 2018 से एक [2] समर्थित एक्सटेंशन है जो br कंटेंट-एन्कोडिंग विधि के लिए समर्थन जोड़ता है।
  • माइक्रोसॉफ्ट एज़्योर, ब्रॉटली का उपयोग करके किनारे पर कंटेंट को गतिशील रूप से संपीड़ित कर सकता है[28] 17 अप्रैल, 2019 को लॉन्च होने के बाद से है ।[29]
  • nginx के पास दिसंबर 2016 से गूगल द्वारा प्रदान किया गया एक ngx_brotli मॉड्यूल है।
  • Node.js में संस्करण 11.7.0 के बाद से एक अंतर्निहित देशी एन- और डिकोडर की सुविधा है, जिसका उपयोग br कंटेंट-एन्कोडिंग का समर्थन करने के लिए किया जा सकता है।
  • अमेज़ॅन क्लाउडफ्रंट सितंबर 2020 तक ब्रॉटली का उपयोग करके किनारे पर कैश करने योग्य प्रतिक्रियाओं को स्वचालित रूप से संपीड़ित कर सकता है।[30]
  • लाइटस्पीड वेब सर्वर ने जुलाई 2017 में संस्करण 5.2 के बाद से केवल स्थिर फ़ाइलों के लिए बीआर कंटेंट-एन्कोडिंग विधि को सम्मिलित किया है।
  • क्लाउडफ्लार सीडीएन अपने एज नोड और उपयोगकर्ता के बीच डेटा को संपीड़ित करने के लिए एक ब्रॉटली विकल्प प्रदान करता है।[31]
  • नेवीसर्वर ने संस्करण 4.99.17b1 में समर्थन जोड़ा
  • कैडी (वेब ​​​​सर्वर) 21 दिसंबर 2016 से संस्करण 0.9.4 के बाद से स्थिर रूप से संपीड़ित .br फ़ाइलें सर्व करता है।
  • lighttpd mod_deflate 1.4.56 से .br नवंबर 2020 से समर्थन करता है[32]

संदर्भ

  1. "Releases - google/brotli". Retrieved 13 September 2020 – via GitHub.
  2. Sheeter, Rod (February 18, 2015), "Smaller Fonts with WOFF 2.0 and unicode-range", Google Open Source Blog, Mountain View, CA: opensource.googleblog.com.
  3. 3.0 3.1 Alakuijala, Jyrki; Kliuchnikov, Evgenii; Szabadka, Zoltan; Vandevenne, Lode (22 September 2015), "Comparison of Brotli, Deflate, Zopfli, LZMA, LZHAM and Bzip2 Compression Algorithms" (PDF), The Comprehensive R Archive Network, r-project.org.
  4. 4.0 4.1 4.2 Szabadka, Zoltan (September 22, 2015), "Introducing Brotli: a new compression algorithm for the internet", Google Open Source Blog, Mountain View, CA: opensource.googleblog.com.
  5. 5.0 5.1 5.2 Alakuijala, Jyrki; Szabadka, Zoltan (2016), RFC 7932: Brotli Compressed Data Format, Internet Engineering Task Force Request for Comments, Fremont, CA: IETF Trust.
  6. "W3C Receives Emmy Award for Standardizing Font Technology". 2022-06-01.
  7. "Changing the face of the web: W3C Web Fonts Working Group and MPEG recognized with a Technology & Engineering Emmy Award". 2022-06-01.
  8. "क्या मैं उपयोग कर सकता हूँ... - ब्रॉटली". 2022-06-28.
  9. Lossless compression with Brotli in Rust for a bit of Pied Piper on the backend, Daniel Reiter Horn and Mehant Baid, 2016-06-29.
  10. [1], Rishabh Jain and Daniel Reiter Horn, 2020-08-04
  11. append to brotli compressed file, github ticket to google Brotli, listing implementation ideas, 2017-12-06
  12. Chirgwin, Richard (September 23, 2015), "Google's new squeeze: Brotli compression open-sourced", The Register, theregister.co.uk.
  13. Larkin, Henry (2007). "Word Indexing for Mobile Device Data Representations". 7th IEEE International Conference on Computer and Information Technology (CIT 2007). pp. 399–404. doi:10.1109/CIT.2007.22. ISBN 978-0-7695-2983-7. S2CID 8707991..
  14. Alakuijala, Jyrki (May 15, 2021). "स्टेटिक डिक्शनरी के कारण ब्रॉटली उत्कृष्ट संपीड़न घनत्व तक नहीं पहुँच पाता है। अधिकता ..." Hacker News.
  15. Kliuchnikov, Eugene. "How to use large window sizes? · Issue #639 · google/brotli". GitHub (in English). Currently we are testing "Large Window Brotli" extension that will allow up to 1GiB window. [...] "Large Window Brotli" is landed.
  16. Adler, Mark (Jan 26, 2015), "Brotli specification review and verification", Adler brotli, San Francisco: GitHub.
  17. Calvano, Paul (2018-07-25). "Brotli Compression: How Much Will It Reduce Your Content?". Retrieved 2021-03-07.
  18. Pandjarov, Hristo (2021-01-13). "ब्रॉटली कम्प्रेशन एल्गोरिथम के साथ अधिक साइट गति प्राप्त होती है". SiteGround. Retrieved 2021-03-07.
  19. "ब्रॉटली(1) मैनुअल पेज". manned.org.
  20. "Brotli support · Issue #1238 · libarchive/libarchive". GitHub (in English). Without a magic signature, libarchive cannot automatically recognize the file type, so it cannot automatically decompress. (Libarchive does not consider the file name, only the contents.)
  21. Goodger, Ben; et al. (26 January 2016), "Firefox 44 release notes", Mozilla Firefox, Mozilla Foundation.
  22. 22.0 22.1 Baheux, Kenji (15 January 2016), "Accept-encoding: br on HTTPS connection", Chrome Platform Status, chromestatus.com.
  23. Trace, Rob (December 20, 2016), "Introducing Brotli compression in Microsoft Edge", Microft Edge Developer, blogs.windows.com
  24. Stenberg, Daniel; et al. "कर्ल - परिवर्तन". curl.haxx.se. Retrieved 14 January 2018.
  25. "रीडमी". GitHub. 15 October 2021.
  26. "Google Brotli: How to compress, open, extract BR files".
  27. "Changes with Apache 2.4.26", Apache HTTPD repository, svn.apache.org.
  28. "एज़्योर फ्रंट डोर के साथ कैशिंग". docs.microsoft.com. 15 June 2023.
  29. "Azure फ्रंट डोर सर्विस अब उपलब्ध है". azure.microsoft.com.
  30. "अमेज़ॅन क्लाउडफ्रंट ने ब्रॉटली कम्प्रेशन के लिए समर्थन की घोषणा की". aws.amazon.com.
  31. "What will Cloudflare compress?". support.cloudflare.com.
  32. "lighttpd 1.4.56 release info". redmine.lighttpd.net.
Notes
 -  Finley, Klint (22 September 2015), "Hooli, I Mean Google, Gives Away Compression Code for Free", Wired Online, wired.com.


बाहरी संबंध

  • ब्रॉटली reference implementation at brotli on GitHub