بروتلي
بروتلي هي خوارزمية ضغط بيانات بدون فقدان للبيانات، طوّرها كلٌّ من يركي ألاكويجالا وزولتان سزابادكا. تستخدم بروتلي مزيجًا من خوارزمية الضغط العامة LZ77 بدون فقدان للبيانات، وتشفير هوفمان، ونمذجة السياق من الدرجة الثانية . تُستخدم بروتلي بشكل أساسي من قِبل خوادم الويب وشبكات توصيل المحتوى لضغط محتوى HTTP ، مما يُسرّع تحميل مواقع الإنترنت. وباعتبارها خليفةً لـ gzip ، فهي مدعومة من جميع متصفحات الويب الرئيسية، وقد ازدادت شعبيتها بشكل ملحوظ، نظرًا لما تُوفّره من ضغط أفضل من gzip. [ 2 ]
اسم
بينما سميت خوارزمية ضغط deflate الخاصة بجوجل باسم Zöpfli، وهي كلمة سويسرية ألمانية تعني خبزًا مضفرًا بالزبدة بحجم وجبة خفيفة ، فإن brotli سميت باسم Brötli، وهي كلمة سويسرية ألمانية تعني لفافة خبز . [ 3 ]
تاريخ
قام موظفا جوجل ، يركي ألاكويجالا وزولتان سزابادكا، بتطوير بروتلي في عام 2013 لتقليل حجم ملفات WOFF . [ 4 ] أكمل ألاكويجالا وسزابادكا مواصفات بروتلي خلال الفترة 2013-2016. وقد رافقت هذه المواصفات نسخة مرجعية طورها مؤلفان إضافيان، هما يفغيني كليوتشنيكوف ولود فانديفين، اللذان كانا قد طورا سابقًا تطبيق زوبفلي من جوجل لضغط البيانات المتوافق مع ديفليت وجي زد آي بي في عام 2013. [ 5 ] : 1 على عكس زوبفلي، الذي كان إعادة تطبيق لمواصفات تنسيق بيانات موجودة، كان بروتلي تنسيق بيانات جديدًا، مما سمح للمؤلفين بتحسين نسب الضغط بشكل أكبر. [ 3 ]
تم تعميم مواصفات Brotli في سبتمبر 2015 لضغط تدفقات HTTP (نوع ترميز المحتوى "br"). وقد حسّن هذا التعميم أيضًا نسبة الضغط باستخدام قاموس مُحدد مسبقًا للكلمات والعبارات شائعة الاستخدام. احتوى إصدار Brotli الذي أصدره مهندسو برمجيات جوجل في سبتمبر 2015 على تحسينات في ضغط البيانات غير الفاقد للبيانات بشكل عام ، مع التركيز بشكل خاص على استخدامه لضغط HTTP . أُعيدت كتابة جزء من المُشفّر، مما أدى إلى تحسين نسبة الضغط، وتسريع كل من المُشفّر والمُفكّك، وتحسين واجهة برمجة تطبيقات البث، وإضافة المزيد من مستويات جودة الضغط. بالإضافة إلى ذلك، يُظهر الإصدار الجديد تحسينات في الأداء عبر مختلف المنصات، مع تقليل استهلاك ذاكرة فك التشفير. [ 3 ]
وافقت فرقة عمل هندسة الإنترنت على مواصفات تنسيق بيانات بروتلي المضغوط كطلب معلومات للتعليق ( RFC 7932 ) في يوليو 2016. [ 6 ] يُعد تنسيق بيانات بروتلي جزءًا لا يتجزأ من الإصدار الثاني من تنسيق خطوط الويب المفتوحة ، [ 6 ] : 3، والذي حاز على جائزة إيمي للتكنولوجيا والهندسة لعام 2021 من الأكاديمية الوطنية للفنون والعلوم التلفزيونية لتوحيد معايير تقنية الخطوط في اتحاد شبكة الويب العالمية (W3C). [ 7 ] [ 8 ]
تمت إضافة دعم Brotli على مر السنين إلى متصفحات الويب، حيث يستخدم 96٪ من المستخدمين حول العالم متصفحًا يدعم هذا التنسيق، اعتبارًا من يوليو 2022. [ 9 ]
في عام 2016، أعادت دروب بوكس برمجة بروتلي بلغة رست لتلبية متطلباتها في تعزيز الأمان ضد العملاء الخبيثين. [ 10 ] [ 11 ]
الخوارزمية
يسمح تنسيق الملف الجديد لـ Brotli لمؤلفيه بتحسين Deflate من خلال العديد من التحسينات على مستوى الخوارزمية والتنسيق: استخدام نماذج السياق للقيم الحرفية ومسافات النسخ، ووصف مسافات النسخ من خلال المسافات السابقة، واستخدام قائمة الانتظار للانتقال إلى المقدمة في اختيار رمز الإنتروبيا، والترميز المشترك للإنتروبيا لأطوال القيم الحرفية والنسخ، واستخدام خوارزميات الرسم البياني في تقسيم الكتل، ونافذة مرجعية خلفية أكبر هي أمثلة على التحسينات.
على عكس معظم خوارزميات الضغط العامة، يستخدم بروتلي قاموسًا مُعدًا مسبقًا، بحجم 120 كيلوبايت تقريبًا، بالإضافة إلى قاموس "النافذة المنزلقة" الذي يتم ملؤه ديناميكيًا. يحتوي القاموس المُعد مسبقًا على أكثر من 13000 كلمة وعبارة وسلسلة فرعية شائعة، مُستمدة من مجموعة كبيرة من النصوص ووثائق HTML. [ 12 ] [ 5 ] وقد ثبت أن استخدام قاموس مُعد مسبقًا يزيد من كفاءة الضغط في الملفات التي تحتوي في الغالب على كلمات شائعة الاستخدام. [ 13 ] تقتصر نافذة بروتلي المنزلقة على 16 ميجابايت . يُمكّن هذا من فك التشفير على الهواتف المحمولة ذات الموارد المحدودة، ولكنه يجعل أداء بروتلي ضعيفًا في اختبارات الضغط التي تستخدم ملفات أكبر حجمًا. يمكن التغلب على قيود صغر حجم النافذة باستخدام بروتلي ذي النافذة الكبيرة ، وهو غير متوافق مع RFC 7932 (بروتلي الأصلي). [ 14 ]
التطبيقات
أصدرت جوجل تطبيقها الخاص لمواصفات Brotli بموجب شروط رخصة MIT للبرمجيات الحرة المتساهلة في عام 2016. وقد قام مارك أدلر ، أحد المؤلفين المشاركين لتنسيق ومكتبة ضغط zlib / gzip ، بتنفيذ عملية تحقق رسمية مستقلة من مواصفات Brotli. [ 6 ] : 126 وقد صدر تطبيق أدلر بموجب شروط رخصة أباتشي المتساهلة المماثلة . [ 15 ] وتوجد تطبيقات أخرى للمواصفات، بما في ذلك تطبيق بلغة Haxe المصدرية .
التطبيقات
يُستخدم ضغط Brotli عمومًا كبديل لضغط gzip على الويب، نظرًا لأن Brotli يوفر ضغطًا أفضل بشكل عام. [ 16 ] بالمقارنة مع ضغط gzip، فإن ملفات JavaScript المضغوطة باستخدام Brotli أصغر بنسبة 15% تقريبًا، وملفات HTML أصغر بنسبة 20% تقريبًا، وملفات CSS أصغر بنسبة 16% تقريبًا. [ 17 ]
يتضمن الإصدار المرجعي برنامج سطر أوامر brotliمشابهًا لـ [ 18 ]gzip ، لكن استخدامه كضاغط بسيط في بيئات يونكس نادر. يجد مطورو Libarchive صعوبة في دعم تنسيق تدفق الملفات الخام، لعدم وجود رقم محدد يدل على تنسيق الملف. [ 19 ].br
دعم الصناعة
المتصفحات والعملاء الآخرين
- أضاف متصفح موزيلا فايرفوكس دعمًا لطريقة ترميز المحتوى "br" في الإصدار 44 (الذي صدر في 26 يناير 2016). [ 20 ]
- يدعم متصفح جوجل كروم طريقة ترميز المحتوى "br" منذ الإصدار 50 (الذي صدر في 20 أبريل 2016). [ 21 ]
- يدعم متصفح أوبرا طريقة ترميز المحتوى "br" منذ الإصدار 38 (الذي صدر في 8 يونيو 2016). [ 21 ]
- يدعم متصفح مايكروسوفت إيدج طريقة ترميز المحتوى "br" منذ الإصدار 15 (الذي صدر في 5 أبريل 2017). [ 22 ]
- يدعم متصفح سفاري طريقة ترميز المحتوى "br" منذ الإصدار 11 (الذي تم إصداره في 5 أكتوبر 2017).
- يحتوي cURL على خيار وقت الترجمة لدعم طريقة ترميز المحتوى "br" باستخدام libbrotli اعتبارًا من الإصدار 7.57، الذي تم إصداره في 29 نوفمبر 2017. [ 23 ]
- يتوفر برنامج 7zip موسعًا مع Brotli بواسطة 7zip-zstd. [ 24 ]
- يدعم برنامج PeaZip تنسيق Brotli .BR للضغط والاستخراج [ 25 ]
خوادم الويب
- بالنسبة لخادم Apache HTTP ، تم دعم طريقة ترميز المحتوى "br" بواسطة وحدة mod_brotli منذ الإصدار 2.4.26. [ 26 ]
- يدعم Microsoft IIS منذ مايو 2018 إضافةً تدعم طريقة ترميز المحتوى "br". [ 27 ]
- يمكن لـ Microsoft Azure Front Door ضغط المحتوى ديناميكيًا على الحافة باستخدام Brotli [ 28 ] منذ إطلاقه في 17 أبريل 2019. [ 29 ]
- يحتوي nginx على وحدة ngx_brotli التي توفرها جوجل منذ ديسمبر 2016.
- يتميز Node.js بوحدة تشفير وفك تشفير أصلية مدمجة منذ الإصدار 11.7.0، والتي يمكن استخدامها لدعم ترميز المحتوى "br".
- يمكن لخدمة Amazon CloudFront ضغط الاستجابات القابلة للتخزين المؤقت تلقائيًا على الحافة باستخدام Brotli، اعتبارًا من سبتمبر 2020. [ 30 ]
- يتضمن خادم الويب LiteSpeed طريقة ترميز المحتوى "br" للملفات الثابتة فقط منذ الإصدار 5.2 في يوليو 2017.
- توفر شبكة توصيل المحتوى (CDN) من Cloudflare خيار brotli لضغط البيانات بين عقدة الحافة الخاصة بها والمستخدم. [ 31 ]
- أضاف برنامج NaviServer الدعم في الإصدار 4.99.17b1
- يقدم برنامج Caddy ملفات .br المضغوطة بشكل ثابت منذ الإصدار 0.9.4 بتاريخ 21 ديسمبر 2016.
- يدعم lighttpd mod_deflate ملفات .br منذ الإصدار 1.4.56 [ 32 ] من نوفمبر 2020.
مراجع
- ↑ جوجل. "الإصدار v1.2.0 · google/brotli" . تم الاطلاع عليه بتاريخ 27 أكتوبر 2025 .
{{cite web}}له|author=اسم عام ( مساعدة ) - ↑ كالفانو، بول (19-03-2024). "الاختيار بين ضغط gzip وBrotli وzStandard" . تم الاسترجاع في 23-06-2025 .
- 1 2 3 سزابادكا، زولتان (22 سبتمبر 2015)، "تقديم بروتلي: خوارزمية ضغط جديدة للإنترنت" ، مدونة جوجل مفتوحة المصدر ، ماونتن فيو، كاليفورنيا: opensource.googleblog.com.
- ↑ شيتر، رود (18 فبراير 2015)، "خطوط أصغر مع WOFF 2.0 ونطاق يونيكود" ، مدونة جوجل مفتوحة المصدر ، ماونتن فيو، كاليفورنيا: opensource.googleblog.com.
- 1 2 ألاكويجالا، يركي؛ كليوتشنيكوف، يفغيني؛ سابادكا، زولتان؛ فانديفين، لود (22 سبتمبر 2015)، "مقارنة خوارزميات ضغط Brotli وDeflate وZopfli وLZMA وLZHAM وBzip2" (ملف PDF) ، شبكة أرشيف R الشاملة ، r-project.org.
- 1 2 3 ألاكويجالا، يركي؛ سزابادكا، زولتان (2016)، RFC 7932: تنسيق بيانات بروتلي المضغوط ، طلب تعليقات من فريق عمل هندسة الإنترنت، فريمونت، كاليفورنيا: صندوق IETF.
- ↑ "اتحاد شبكة الويب العالمية يحصل على جائزة إيمي لتوحيد معايير تقنية الخطوط" . 2022-06-01.
- ↑ "تغيير وجه الويب: مجموعة عمل خطوط الويب التابعة لاتحاد شبكة الويب العالمية (W3C) ومجموعة MPEG تحصلان على جائزة إيمي للتكنولوجيا والهندسة" . 2022-06-01.
- ↑ "هل يمكنني استخدام... - بروتلي" . 2022-06-28.
- ↑ ضغط بدون فقدان باستخدام Brotli في Rust للحصول على القليل من Pied Piper في الواجهة الخلفية ، دانيال رايتر هورن وميهانت بايد، 2016-06-29.
- ↑ريشاب جاين ودانيال رايتر هورن، 2020-08-04
- ↑ تشيرجوين، ريتشارد (23 سبتمبر 2015)، "استحواذ جوجل الجديد: ضغط بروتلي مفتوح المصدر" ، ذا ريجستر ، theregister.co.uk.
- ↑ لاركين، هنري (2007). "فهرسة الكلمات لتمثيلات بيانات الأجهزة المحمولة". المؤتمر الدولي السابع لمعهد مهندسي الكهرباء والإلكترونيات حول تكنولوجيا الحاسوب والمعلومات (CIT 2007) . الصفحات 399-404 . doi : 10.1109/CIT.2007.22 . ISBN 978-0-7695-2983-7. S2CID 8707991 . .
- ↑ كليوتشنيكوف، يوجين. "كيفية استخدام أحجام نوافذ كبيرة؟ · المشكلة رقم 639 · google/brotli" . GitHub .
نجري حاليًا اختبارًا لإضافة "Large Window Brotli" التي ستتيح استخدام نوافذ بحجم يصل إلى 1 جيجابايت. [...] تم إطلاق "Large Window Brotli".
- ↑ أدلر، مارك (26 يناير 2015)، "مراجعة مواصفات بروتلي والتحقق منها" ، أدلر بروتلي ، سان فرانسيسكو: جيت هاب.
- ↑ كالفانو، بول (25 يوليو 2018). "ضغط بروتلي: ما مقدار التخفيض الذي سيُحدثه في حجم المحتوى؟" . تم الاطلاع عليه بتاريخ 7 مارس 2021 .
- ↑ باندجاروف، هريستو (13 يناير 2021). "تحسين سرعة الموقع باستخدام خوارزمية ضغط بروتلي" . سايت جراوند . تم الاطلاع عليه بتاريخ 7 مارس 2021 .
- ↑ "صفحة دليل brotli(1)" . manned.org .
- ↑ "دعم Brotli · المشكلة رقم 1238 · libarchive/libarchive" على GitHub .
بدون توقيع سحري، لا يستطيع libarchive التعرف تلقائيًا على نوع الملف، وبالتالي لا يمكنه فك ضغطه تلقائيًا. (لا يأخذ libarchive اسم الملف في الاعتبار، بل محتوياته فقط).
- ↑ جودجر، بن؛ وآخرون (26 يناير 2016)، "ملاحظات إصدار فايرفوكس 44" ، موزيلا فايرفوكس ، مؤسسة موزيلا .
- 1 2 باهيو، كينجي (15 يناير 2016)، "Accept-encoding: br on HTTPS connection" ، حالة منصة كروم ، chromestatus.com.
- ↑ تريس، روب (20 ديسمبر 2016)، "تقديم ضغط Brotli في Microsoft Edge" ، مطور Microsoft Edge ، blogs.windows.com
- ↑ ستينبرغ، دانيال؛ وآخرون . "curl - التغييرات" . curl.haxx.se. تم الاطلاع عليه بتاريخ 14 يناير 2018 .
- ↑ "README" . GitHub . 15 أكتوبر 2021.
- ↑ "Google Brotli: كيفية ضغط ملفات BR وفتحها واستخراجها" .
- ↑ "التغييرات مع Apache 2.4.26" ، مستودع Apache HTTPD ، svn.apache.org.
- ↑ "نسبة ضغط أعلى مع ضغط بروتلي" . 6 أكتوبر 2023.
- ↑ "التخزين المؤقت باستخدام Azure Front Door" . docs.microsoft.com . 15 يونيو 2023.
- ↑ خدمة Azure Front Door متاحة الآن . azure.microsoft.com
- ↑ "أعلنت خدمة Amazon CloudFront عن دعمها لضغط Brotli" . aws.amazon.com .
- ↑ "ما الذي ستضغطه خدمة Cloudflare؟" . support.cloudflare.com .
- ↑ "معلومات إصدار lighttpd 1.4.56" . redmine.lighttpd.net .
- ملحوظات
- - فينلي، كلينت (22 سبتمبر 2015)، "هولي، أقصد جوجل، تُقدم رمز ضغط مجاني" ، موقع Wired الإلكتروني ، wired.com .
روابط خارجية
- الموقع الرسمي
- تطبيق Brotli المرجعي موجود على GitHub
- مكتبات حاسوب مجانية
- خوارزميات الضغط بدون فقدان البيانات
- ضغط البيانات
