Loading...

مساعدة CDN.com.tr

ضغط Brotli وgzip

تضغط الحافة الاستجابات النصية تلقائيًا: Brotli للمتصفحات التي تدعمه، وgzip لغيرها. اطّلع على الطريقة التي يستخدمها كل نطاق في بطاقة الضغط، وتحقق منها باستخدام curl.

ضغط Brotli وgzip

تضغط الحافة الاستجابات النصية تلقائيًا: Brotli للمتصفحات التي تدعمه، وgzip لغيرها. اطّلع على الطريقة التي يستخدمها كل نطاق في بطاقة الضغط، وتحقق منها باستخدام curl.

أدلة ذات صلة

ترويسة الاستجابة الأخرى التي تقرؤها أثناء الاختبار، وما يحدث للصور، والقواعد التي تشير إليها البطاقة.

أثناء الاختبار

قراءة حالة التخزين المؤقت: HIT وMISS وBYPASS وEXPIRED

تُظهر ترويسة X-Proxy-Cache-MT ما إذا كانت الاستجابة قد جاءت من التخزين المؤقت.

افتح الموضوع
قواعد التسليم

اكتب سلوك التخزين المؤقت عبر Add Rule

القواعد المدرجة في الصفحة نفسها؛ والملاحظة أسفل كل قيمة ضغط تذكر إحداها.

افتح الموضوع

مسار اللوحة

  1. لوحة الإدارة
  2. قواعد التسليم
  3. التحسين
  4. الضغط

المتطلبات المسبقة

  • نطاق تقدّمه قاعدة تسليم: تسرد بطاقة الضغط النطاقات التي تقدّمها قواعد الحساب.
  • curl، أو أدوات المطوّر في متصفحك، للفحص.

دليل خطوة بخطوة

1

اقرأ بطاقة الضغط

تُظهر البطاقة ضغط كل نطاق عبر HTTP وHTTPS.

  • افتح قواعد التسليم وانتقل إلى تبويب التحسين.
  • في بطاقة الضغط، ابحث عن نطاقك ضمن النطاق.
  • اقرأ القيم ضمن HTTP وHTTPS، والملاحظة أسفل كل منها.

النتيجة المتوقعة: يُظهر النطاق الذي يُقدَّم بالإعدادات الافتراضية Brotli وgzip، مع ملاحظة مثل من القاعدة رقم … أو من قاعدة التحقق من الشهادة.

2

تحقق من Brotli وgzip باستخدام curl

اطلب ملفًا نصيًا حجمه 256 بايت على الأقل، مثل ملف CSS أو JavaScript، مرة تطلب فيها Brotli ومرة تطلب gzip.

  • أرسل طلب GET مع Accept-Encoding: br واقرأ ترويسات الاستجابة.
  • كرّره مع Accept-Encoding: gzip.

النتيجة المتوقعة: content-encoding: br في الاستجابة الأولى وcontent-encoding: gzip في الثانية، ومع كل منهما vary: Accept-Encoding.

cdnctl equivalent
curl -s -o /dev/null -D - -H 'Accept-Encoding: br' https://www.example.com/assets/app.css | grep -iE '^(content-encoding|vary):'
curl -s -o /dev/null -D - -H 'Accept-Encoding: gzip' https://www.example.com/assets/app.css | grep -iE '^(content-encoding|vary):'
3

قارن الأحجام

يُظهر حجم التنزيل ما يوفّره الضغط في ملفاتك أنت.

  • نزّل الملف مرة مع Accept-Encoding: br ومرة دون ترويسة Accept-Encoding.
  • قارن عددَي البايتات.

النتيجة المتوقعة: عددان من البايتات: الحجم المضغوط أولًا، ثم الحجم غير المضغوط.

cdnctl equivalent
curl -s -o /dev/null -w '%{size_download}\n' -H 'Accept-Encoding: br' https://www.example.com/assets/app.css
curl -s -o /dev/null -w '%{size_download}\n' https://www.example.com/assets/app.css

التحقق

  • curl -s -o /dev/null -D - -H 'Accept-Encoding: br' https://www.example.com/assets/app.css | grep -iE '^(content-encoding|vary):' → content-encoding: br، vary: Accept-Encoding
  • curl -s -o /dev/null -D - -H 'Accept-Encoding: gzip' https://www.example.com/assets/app.css | grep -iE '^(content-encoding|vary):' → content-encoding: gzip، vary: Accept-Encoding
  • curl -s -o /dev/null -w '%{size_download}\n' -H 'Accept-Encoding: br' https://www.example.com/assets/app.css → الحجم المضغوط؛ والأمر نفسه دون ترويسة Accept-Encoding → الحجم غير المضغوط

حالات الاستخدام

نقلت موقعًا إلى خلف CDN وتريد التأكد من أن ملفات HTML وCSS وJavaScript وJSON الخاصة به تصل إلى الزوار مضغوطة، دون إعداد الضغط على خادمك الأصلي.

سير عمل سريع

  1. افتح قواعد التسليم للحساب وانتقل إلى تبويب التحسين.
  2. في بطاقة الضغط، الموسومة بـتلقائي، ابحث عن صف نطاقك.
  3. اقرأ عمودي HTTP وHTTPS: تعني Brotli وgzip أن الطريقتين مفعّلتان لذلك البروتوكول، وتذكر الملاحظة أسفل القيمة القاعدة التي تأتي منها. وتعني gzip فقط أو Brotli فقط أو متوقف أن أقدم قاعدة للنطاق حُفظت بهذا الإعداد؛ وتذكر الملاحظة تلك القاعدة.
  4. اطلب ملف CSS أو JavaScript باستخدام curl واقرأ ترويسة content-encoding.

الفحوصات

  • تضغط الحافة بحسب Content-Type الاستجابة: HTML وCSS وJavaScript وJSON (application/json وapplication/ld+json وapplication/manifest+json) وXML (بما فيه موجزات RSS وAtom) والنص العادي وSVG وأيقونات ICO وWebAssembly وخطوط TTF وOTF وEOT. أما أنواع المحتوى الأخرى فتخرج كما هي.
  • صور JPEG وPNG وWebP وصيغ الصور الأخرى باستثناء SVG وICO، وخطوط WOFF وWOFF2، والفيديو وأرشيفات zip، صيغٌ مضغوطة أصلًا وتخرج كما هي.
  • الاستجابات ذات الحجم المعروف الأقل من 256 بايت تخرج دون ضغط.
  • يُطبَّق الضغط على الاستجابات 200 و403 و404.
  • تحمل الاستجابات المضغوطة Vary: Accept-Encoding، لتُبقي ذاكرات التخزين المؤقت الوسيطة النسختين المضغوطة وغير المضغوطة منفصلتين.
  • لا تطلب المتصفحات Brotli إلا عبر HTTPS؛ وعبر HTTP العادي يحصل المتصفح نفسه على gzip.
  • الحافة هي التي تتولى الضغط، فلا يحتاج خادمك الأصلي إلى ذلك. والاستجابة التي تصل مضغوطة أصلًا (تحمل ترويسة Content-Encoding) لا تُضغط مرة أخرى.
  • عند تعديل قاعدة، تظهر ملاحظة لكل نطاق لكل نطاق من نطاقاتها يأتي ضغطه من قاعدة أقدم، وتذكر تلك القاعدة.
  • يُحدَّد الضغط لكل نطاق بحسب أقدم قاعدة له، لا لكل قاعدة: القيمة الظاهرة في البطاقة، بما فيها gzip فقط أو Brotli فقط أو متوقف، تنطبق على كل قواعد النطاق عبر ذلك البروتوكول، ولا يمكن تغييرها من البطاقة.

الأسئلة الشائعة

هل أحتاج إلى تفعيل الضغط؟

لا. الضغط تلقائي: تُنشأ قواعد التسليم مع Brotli وgzip، وبطاقة الضغط موسومة بـتلقائي.

لماذا لا يُظهر فحصي ترويسة content-encoding؟

تحقق من خمسة أمور: أن بطاقة الضغط تُظهر Brotli وgzip لذلك النطاق والبروتوكول، وأن الطلب يطلب الضغط (لا يرسل curl ترويسة Accept-Encoding ما لم تضفها)، وأن الملف من الأنواع التي تُضغط، وأن حجمه 256 بايت على الأقل، وأن الحالة 200 أو 403 أو 404. شغّل أوامر التحقق أدناه كما هي مكتوبة.

Brotli أم gzip: أيهما يحصل عليه الزائر؟

Brotli للمتصفحات التي تدعمه، وgzip لغيرها. تقرأ الحافة ترويسة Accept-Encoding التي يرسلها المتصفح، ولا تطلب المتصفحات Brotli إلا عبر HTTPS.

ماذا تعني «لا يُقدَّم» في البطاقة؟

لا توجد بعد قاعدة تسليم تقدّم ذلك النطاق عبر ذلك البروتوكول. وبمجرد أن تقدّم قاعدةٌ النطاق عبر HTTP أو HTTPS، تُظهر البطاقة ضغطه هناك.