كيفية تمكين ضغط GZIP لتسريع مواقع WordPress

نشرت: 2020-10-16

أسهل طريقة لتسريع موقع WordPress الخاص بك هي التخلص من جميع موارده غير المرغوب فيها. ثاني أسهل طريقة لتسريعها هي ضغط جميع الموارد المطلوبة. يعد تمكين ضغط GZIP على خادم الويب أحد أبسط الطرق وأكثرها فعالية لتحقيق ذلك.

تتضمن جميع المتصفحات الحديثة دعمًا لضغط GZIP افتراضيًا. ومع ذلك ، لتقديم الموارد المضغوطة إلى المستخدمين لديك بدون أخطاء ، يجب عليك تكوين الخادم الخاص بك بشكل صحيح.

في هذا المنشور ، ستتعلم أساسيات ضغط البيانات على الويب ، وما هو ضغط GZIP ، وفوائده المتنوعة ، وكيف يمكنك استخدامه لتسريع مواقع WordPress الخاصة بك على إعدادات خادم مختلفة.

متحمس؟ دعونا فك الضغط!

هل تفضل مشاهدة نسخة الفيديو؟

أسهل طريقة لتسريع موقع #WordPress الخاص بك: التخلص من الموارد غير المرغوب فيها. ثاني أسهل طريقة: ضغط جميع الموارد المطلوبة. تعلم كيفية القيام بذلك بسرعة باستخدام ضغط GZIP انقر للتغريد

أساسيات ضغط البيانات على الويب

ضغط البيانات على الويب هو عملية تقليل حجم البيانات المنقولة بواسطة مواقع الويب. اعتمادًا على نوع البيانات - النص والصور وأوراق الأنماط والنصوص والخطوط - توجد طرق مختلفة للشروع في ضغط البيانات.

رسم توضيحي للمكونات الرئيسية لصفحة الويب
المكونات الرئيسية لصفحة الويب

على سبيل المثال ، يعد تصغير HTML و CSS وجافا سكريبت طريقة بسيطة لتقليل كمية البيانات التي ترسلها المتصفحات. هنا ، يقوم المصغر بضغط النص عن طريق إزالة الأحرف غير الضرورية مثل التعليقات والمسافات البيضاء من التعليمات البرمجية المصدر.

في المثال أدناه لمستند HTML بسيط ، هناك ثلاثة أنواع للمحتوى: ترميز HTML وأنماط CSS وشفرة JavaScript.

كل نوع محتوى له بناء جملة ودلالات فريدة. بشكل عام ، يحتوي مستند HTML هذا على 357 حرفًا في المجموع.

 < html > < head > < style > /* kinsta-banner is used on the homepage only */ .kinsta-banner { font-size: 150% } .kinsta-banner { width: 75% } </ style > </ head > < body > <!-- kinsta banner START --> < div >...</ div > <!-- kinsta banner END --> < script > kinstaScripts(); // random scripts used on the page </ script > </ body > </ html >

الكود أعلاه سهل القراءة والمتابعة. إنه مثالي للتطوير. ومع ذلك ، ليس من الضروري أن يقرأ المتصفح التعليقات وأن يكون لديه علامات بادئة تمامًا. يمكن للضاغط الذكي تحليل هذا المستند وإزالة جميع البتات غير الضرورية منه.

 < html >< head >< style >.kinsta-banner{font-size:150%;width:75%}</ style ></ head >< body >< div >...</ div >< script >kinstaScripts();</ script ></ body ></ html >

بعد التصغير ، يتم تقليل حجم مستند HTML إلى 141 حرفًا فقط. وهذا يمثل توفيرًا بنسبة 60.50٪ في عدد الأحرف. ليس الأمر سهلاً على العينين ، لكن هذا لا يهم المتصفح. ستستمر في عرض الصفحة نفسها للمستخدم.

للاستفادة من كلا الإصدارين ، يمكنك الاحتفاظ بالمستند الأصلي كـ "إصدار تطوير" ، ولكن قلل كل التعليمات البرمجية قبل نشرها مباشرة.

تعتني معظم المكونات الإضافية لأداء WordPress بهذا الأمر تلقائيًا نيابة عنك.

مقارنة حجم الملف بين jQuery غير المضغوط
ضغط حجم ملف jQuery غير مضغوط مقابل مصغر

على سبيل المثال ، النسخة غير المضغوطة من مكتبة jQuery 3.5.1 أكبر بثلاث مرات من النسخة المصغرة من نفس الملف.

وبالمثل ، يمكن لتقنيات الضغط نفسها الموضحة أعلاه تحسين أنواع المحتوى الأخرى مثل الصور ومقاطع الفيديو والخطوط والمزيد. التخفيضات الخاصة بالمحتوى مثل هذه هي الخطوة الأولى في تحسين حجم الأصول النصية لموقعك على الويب.

ولكن هناك ما هو أكثر لضغط البيانات من مجرد التصغير. باستخدام تقنيات الرياضيات المتقدمة ، يمكن لخوارزميات ضغط البيانات تقليل حجم البيانات بشكل أكبر.

يعد GZIP أحد أشهر الأمثلة على طريقة ضغط البيانات هذه. إنه يتيح نقل البيانات بكفاءة وقد ساهم بشكل كبير في جعل الإنترنت وسيلة اتصالات عالمية قابلة للتطبيق.

ما هو ضغط GZIP؟

GZIP ، اختصارًا لـ GNU Zip ، هي أشهر طريقة لضغط البيانات بدون فقدان البيانات على الويب. يسمح لك بتقليل حجم صفحات HTML وأوراق الأنماط والنصوص الخاصة بموقعك.

بصرف النظر عن كونه خوارزمية لضغط البيانات ، فإن GZIP هو أيضًا امتداد ملف ( .gz ) وبرنامج يستخدم لضغط / فك ضغط الملفات.

يعتمد على خوارزمية DEFLATE ، وهي مزيج من ترميز LZ77 وخوارزميات ترميز Huffman.

رسم توضيحي لكيفية اعتماد ضغط GZIP على خوارزمية DEFLATE
يعتمد ضغط GZIP على خوارزمية DEFLATE

يأخذ ضاغط GZIP مجموعة من البيانات الأولية ويضغطها دون فقدان البيانات. يمكن أن تكون البيانات الأولية من أي نوع ملف ، ولكن GZIP يعمل بشكل أفضل مع الأصول المستندة إلى النصوص (مثل HTML و CSS و JS).

يغطي القسم التالي كيفية عمل ضغط GZIP في العمق.

كيف يضغط GZIP البيانات

توضيح تقريبي لكيفية عمل ضغط GZIP
توضيح تقريبي لكيفية عمل ضغط GZIP

بادئ ذي بدء ، يقوم ضاغط GZIP بتشغيل خوارزمية الضغط LZ77 على البيانات الأولية لإزالة التكرار. تعمل هذه الخوارزمية من خلال إيجاد أنماط متكررة في نافذة منزلقة محددة مسبقًا (قسم صغير من البيانات الأولية).

ثم يستبدل كل السلاسل المكررة مع مجموعات لضغط البيانات الأولية.

توضيح لخوارزمية التشفير LZ77
توضيح لخوارزمية التشفير LZ77

في المثال أعلاه ، يبلغ حجم النافذة المنزلقة 13 حرفًا فقط (13 بايت). ومع ذلك ، يمكن أن يستخدم ضغط GZIP حجم نافذة منزلقة بحد أقصى 32 كيلو بايت (32768 بايت). يلعب حجم النافذة المنزلقة دورًا رئيسيًا في أداء ضغط LZ77.

بعد ضغط البيانات الأولية باستخدام خوارزمية LZ77 ، يستخدم ضاغط GZIP بعد ذلك خوارزمية ترميز Huffman لضغطها بشكل أكبر. يقوم بذلك عن طريق تعيين الأحرف التي تحدث بشكل متكرر أقل عدد من البتات ، مع تعيين أكبر عدد من وحدات البت للأحرف النادرة.

هذه التقنية تشبه تلك المستخدمة في شفرة مورس ، حيث تحصل الأحرف التي تحدث بشكل متكرر في اللغة الإنجليزية على أقصر التسلسلات.

لفهم كيفية عمل خوارزمية ترميز هوفمان ، ضع في اعتبارك كلمة BOOKKEEPER . يبلغ طوله 10 أحرف ، ولكنه يحتوي على 6 أحرف فريدة فقط. تحتوي هذه الكلمة على مزيج جيد من الأحرف الفردية والمزدوجة والثلاثية.

تستخدم جميع مواقع الويب تقريبًا ترميز أحرف UTF-8 لتمثيل الأحرف والرموز. كل حرف ASCII في UTF-8 ، والذي يتضمن أيضًا الأبجدية الإنجليزية ، يستخدم 1 بايت (8 بت).

كلمة "BOOKKEEPER" لها العديد من الأحرف المتكررة
كلمة "BOOKKEEPER" لها العديد من الأحرف المتكررة

ستتطلب السلسلة المكونة من 10 أحرف مثل BOOKKEEPER 10 بايت (80 بت) من الذاكرة. يمكنك أن ترى أنه يحتوي على مثيل واحد للأحرف B , P , R ومثالين من الحروف O و K و 3 مثيلات من الحرف E

تستخدم خوارزمية ترميز هوفمان هذه المعرفة لضغط السلسلة بلا خسارة. يقوم بذلك عن طريق إنشاء شجرة ثنائية مع كل حرف فريد على هيئة ورقة.

الحروف ذات التردد الأقل (مثل B ، P ، R ) ستجد نفسها في أسفل الشجرة ، بينما تلك التي تظهر بشكل متكرر (مثل E ، O ، K ) ستجد نفسها بشكل مثالي في القمة.

العقدة العلوية في الشجرة هي الجذر ، وقيمتها تساوي العدد الإجمالي للأحرف في السلسلة.

هوفمان تري لكلمة "حارس"
هوفمان تري لكلمة "حارس"

بعد إنشاء شجرة هوفمان ، يتم إعطاء جميع الأسهم المتفرعة على اليسار والأسهم المتفرعة اليمنى أرقام 0 و 1 على التوالي. يمكنك بعد ذلك إنشاء كود Huffman لأي حرف عن طريق تتبع مسار الجذر إلى الورقة وربط كل 0 s و 1 s.

أكواد هوفمان هي أكواد ثنائية فريدة لكل حرف
أكواد هوفمان هي أكواد ثنائية فريدة لكل حرف

يمكنك ملاحظة أن الحروف ذات التردد الأعلى لها رموز هوفمان بأحجام بت صغيرة.

ملاحظة: يمكن لخوارزمية ترميز هوفمان إنشاء أكواد ثنائية بديلة باستخدام إستراتيجية ترتيب مختلفة للأحرف ذات الترددات نفسها. ومع ذلك ، فإن الحجم الإجمالي للسلسلة المشفرة سيبقى كما هو.

كلمة 80 بت مشفرة كسلسلة 25 بت
كلمة 80 بت مشفرة كسلسلة 25 بت

وهذا يمثل انخفاضًا بنسبة 68.75٪ في الذاكرة المطلوبة لتخزين الكلمة الأصلية.

يؤدي استخدام شجرة هوفمان مع اصطلاح 0/1 إلى إنشاء أكواد ثنائية تفي بخاصية البادئة. إنه يضمن أن كود هوفمان لأي حرف معين ليس بادئة لأي كود حرف آخر ، مما يجعل من السهل فك تشفير السلسلة المشفرة باستخدام شجرة هوفمان. يلعب هذا دورًا أساسيًا في سرعة فك ضغط GZIP.

تمامًا كما هو الحال مع الكلمة أعلاه ، يستخدم ضاغط GZIP خوارزمية ترميز Huffman لزيادة تحسين المجموعات التي تم إنشاؤها بواسطة خوارزمية LZ77. ينتج عن هذا ملفات مضغوطة بدرجة عالية بامتداد .gz.

إذا كنت مهتمًا بمعرفة المزيد حول كيفية عمل GZIP ، فراجع هذا الفيديو للحصول على نظرة عامة سريعة.

ما مدى جودة ضغط GZIP؟

عادةً ما يحقق GZIP نسبة ضغط تبلغ حوالي 70٪ للملفات الصغيرة ، ولكن يمكن أن تصل إلى 90٪ للأصول الأكبر القائمة على النص.

مقارنة بين نسب ضغط GZIP لمختلف مكتبات CSS و JS
نسب ضغط GZIP لبعض مكتبات CSS و JS الشائعة

في الجدول أعلاه ، يمكنك أن ترى أن ضغط الملفات المصغرة باستخدام GZIP يمكن أن يقلل حجمها بشكل أكبر.

ملاحظة: يمكنك ضغط أي نوع ملف باستخدام GZIP ، ولكن بالنسبة للأصول التي تم ضغطها بالفعل باستخدام طرق أخرى (مثل الصور ومقاطع الفيديو) ، فلن يتم توفير أي توفير. في بعض الأحيان ، قد يؤدي ذلك إلى زيادة حجم الملف.

لا تعتمد قوة خوارزمية الضغط فقط على نسبة الضغط الخاصة بها ، ولكن أيضًا على مدى سرعة وكفاءة ضغط البيانات وفك ضغطها. هذا هو المكان الذي يتفوق فيه GZIP في معظم حالات الاستخدام.

نظرًا لأن GZIP يقوم بفك الضغط بسرعة باستخدام خوارزمية دفق ، فهو مناسب جدًا لبروتوكولات الويب حيث تكون السرعة جوهرية. بالإضافة إلى ذلك ، يستخدم GZIP الحد الأدنى من الموارد لضغط البيانات وفك ضغطها ، مما يجعلها مثالية لكل من الخوادم والعملاء على حدٍ سواء.

أداء ضغط brotli مقابل bzip2 مقابل GZIP مقابل xz (المصدر: OpenCPU)
أداء ضغط brotli مقابل bzip2 مقابل GZIP مقابل xz (المصدر: OpenCPU)

تقارن الرسوم البيانية أعلاه أداء الضغط لخوارزميات ضغط brotli و bzip2 و gzip و xz . يخسر GZIP في اختبار نسبة الضغط بهامش طفيف ، ولكن لسرعات الضغط وفك الضغط ، فإنه يتفوق على المنافسة تمامًا.

بالنظر إلى الرسم البياني لسرعة الضغط ، يمكننا أن نستنتج أن GZIP مثالي للضغط في الوقت الفعلي في خوادم HTTP وتدفقات البيانات الأخرى على الويب. بالنظر إلى جميع إيجابياته في تطوير الويب ، صادقت IETF على GZIP كأحد التنسيقات القياسية الثلاثة للضغط في HTTP / 1.1.

ملاحظة: يتم استخدام نسخة تجريدية من مكتبة ضغط GZIP تسمى zlib في العديد من أنظمة التشغيل الشائعة (Linux و macOS و iOS) ووحدات تحكم الألعاب الحديثة (PlayStation 4 و Wii U و Xbox One). يتم استخدامه أيضًا في تنسيق ملف PNG بدون فقد لضغط الصور.

6 مزايا ضغط GZIP

دعونا نلقي نظرة فاحصة على أهم مزايا ضغط GZIP.

يسلم نسبة ضغط لائقة

كما تمت مناقشته من قبل ، لا يمتلك GZIP أفضل نسبة ضغط مقارنة بالمنافسين. لكنها ليست بعيدة عنهم أيضًا. عادةً ، يمكن أن يساعدك في تقليل حجم الموارد المستندة إلى النصوص بنسبة 70-90٪.

ضغط وفك الضغط بسرعة فائقة

بالنسبة لسرعات ضغط البيانات وإلغاء الضغط ، فإن GZIP هو الفائز الواضح. من المرغوب فيه للغاية للضغط الفوري في خوادم HTTP وتدفقات البيانات الأخرى.

يتطلب القليل من الذاكرة

يترك GZIP حيزًا ضئيلًا من الذاكرة ، مما يجعله مناسبًا للخوادم والأنظمة ذات سعة الذاكرة المحدودة. وبالتالي ، ستجده مدعومًا حتى من قبل أرخص مزودي خدمة استضافة الويب.

لا يتوسع كثيرًا حتى في أسوأ الحالات

خوارزميات ضغط البيانات غير المفقودة مثل GZIP لها حدود صارمة لا يمكنها بعدها ضغط البيانات.

عادةً ما يحدث هذا عندما يتم ضغط المورد جيدًا بالفعل ، أو إذا كان صغيرًا ويكون الحمل الإضافي لإضافة قاموس GZIP أعلى من مدخرات الضغط. يمكننا أن نعزو هذه الظاهرة إلى مفهوم يسمى ترميز الإنتروبيا. GZIP شديد المقاومة لهذا التأثير.

مجاني للاستخدام ومفتوح المصدر

تم إنشاء GZIP بشكل أساسي كبديل مجاني ومفتوح المصدر لبرنامج الضغط الحاصل على براءة اختراع والمستخدم في أنظمة Unix المبكرة. وبالتالي ، فهي ليست مرهونة بأي براءات اختراع ويمكن لأي شخص استخدامها بحرية.

يتمتع بدعم عالمي

وفقًا لـ W3Techs ، يتم استخدام ضغط GZIP بواسطة 82٪ من جميع مواقع الويب التي يتتبعونها ، مما يجعلها خوارزمية الضغط الأكثر استخدامًا عبر الويب.

يدعم GZIP جميع الخوادم والعملاء تقريبًا. بغض النظر عن الخادم الذي تستضيف موقعك عليه ، يمكنك تسريع ذلك من خلال تمكين GZIP عليه.

تحذيرات GZIP في أدوات اختبار سرعة الموقع

بجانب التصغير ، يعد تمكين GZIP أحد أبسط تحسينات السرعة وأكثرها فعالية والتي يمكنك تنفيذها على موقع الويب الخاص بك.

إنها أيضًا إحدى أسهل الطرق لتحسين WordPress. على الرغم من ذلك ، لا تزال العديد من مواقع WordPress لا تستخدمها.

عند زيارة أحد مواقع الويب ، يتحقق المستعرض الخاص بك مما إذا كان خادم الويب قد تم تمكين GZIP به عن طريق التحقق content-encoding: gzip . إذا كان الرأس موجودًا ، فإنه يسترد الملفات المضغوطة ، ويفك ضغطها ، ثم يقدم لك الملفات الأصغر تلقائيًا.

رأس استجابة "ترميز المحتوى: gzip"
رأس استجابة "ترميز المحتوى: gzip" في Chrome DevTools

إذا لم يكتشف المتصفح رأس استجابة GZIP ، فسيقوم بتنزيل الملفات غير المضغوطة. في معظم الحالات ، يمكن أن يكون الاختلاف في سرعات تحميل الصفحة عدة ثوانٍ. وبالتالي ، إذا لم يكن لديك GZIP ممكّنًا ، فسترى تحذيرات في أدوات اختبار سرعة موقع الويب.

تحذير GZIP في PageSpeed ​​Insights / Lighthouse من Google

تثير Google PageSpeed ​​Insights تحذيرًا عندما لا يكون لديك أي ضغط نص ممكّن على موقع الويب الخاص بك.

ملاحظة: كانت Google PageSpeed ​​Insights و Google Lighthouse أداتين منفصلتين لاختبار أداء موقع الويب. لقد عملوا بشكل مستقل عن بعضهم البعض حتى عام 2018 ، عندما قامت Google بترقية PageSpeed ​​Insights لاستخدام Lighthouse كمحرك تحليل خاص بها. ومن ثم ، فإن PageSpeed ​​Insights و Lighthouse هما نفس الشيء الآن.

تحذير "تمكين ضغط النص" في Google PageSpeed ​​Insights
تحذير "تمكين ضغط النص" في Google PageSpeed ​​Insights

في مثال الموقع أعلاه ، يمكن أن يؤدي ضغط الموارد المستندة إلى النصوص إلى تقليل وزن الصفحة بنسبة تزيد عن 78٪ وتسريع وقت تحميل الصفحة بمقدار 2.1 ثانية .

ملاحظة: تعتمد PageSpeed ​​Insights على رؤوس الاستجابة التي يتم إرجاعها إلى متصفحك بواسطة الخادم. في بعض الأحيان ، قد يُظهر تحذيرًا خاطئًا حتى عند تمكين ضغط GZIP. قد يكون ذلك بسبب تشغيل اختبار السرعة على جهاز يستخدم خادم وكيل وسيط أو برنامج أمان. قد تتداخل مع تنزيل الملفات المضغوطة من خوادم خارجية.

تحذير GZIP في GTmetrix

تعرض GTmetrix تحذيرًا إذا كان موقع الويب الخاص بك لا يخدم موارد نصية مضغوطة. مثل Google PageSpeed ​​Insights ، سيُظهر لك أيضًا المدخرات المحتملة التي يمكنك تحقيقها.

تحذير "تمكين الضغط" في GTmetrix
تحذير "تمكين الضغط" في GTmetrix

ملاحظة: تعمل GTmetrix على ترقية خوارزمية اختبار السرعة الخاصة بها لاستبدال مكتبات PageSpeed ​​Insights القديمة ومكتبات YSlow بأحدث مقاييس Google Lighthouse. يمكنك أن تتوقع أن يكون تحذير ضغط GZIP مشابهًا للتحذير الذي تظهره Lighthouse.

تحذير GZIP في أدوات Pingdom

تطرح Pingdom Tools تحذيرًا مباشرًا لضغط مكونات موقع الويب الخاص بك باستخدام GZIP.

تحذير "ضغط المكونات باستخدام GZIP" في أدوات Pingdom
تحذير "ضغط المكونات باستخدام GZIP" في أدوات Pingdom

في قسم الوصف ، تمنحك أدوات Pingdom أيضًا بعض الإحصائيات حول أهمية GZIP. حبوب فاصولياء رائعة!

تحذير GZIP في WebPageTest

يعرض WebPageTest تحذيرًا في علامة التبويب "مراجعة الأداء" الخاصة به إذا اكتشف أن أي استجابات قابلة للضغط لا يتم تقديمها بأفضل طريقة ممكنة.

تحذير "استخدام ضغط GZIP" في WebPageTest
تحذير "استخدام ضغط GZIP" في WebPageTest

سيعطي WebPageTest أيضًا درجة متدرجة لإظهار مدى خطورة التحذير. على سبيل المثال ، يصنف التحذير أعلاه 23 من 100 ، مما يعني أنه يجب عليك إصلاحه كأولوية.

كيفية التحقق من تمكين ضغط GZIP

يتم دعم رأس HTTP Accept-Encoding: gzip, deflate بواسطة جميع المتصفحات الحديثة بشكل فعال. وبالتالي ، فإن معظم مضيفي الويب ، بما في ذلك Kinsta ، يقومون بتمكين ضغط GZIP افتراضيًا على جميع خوادمهم.

عندما ترى خوادم الويب هذا العنوان مرسلاً بواسطة المستعرض ، فإنها تتعرف على دعم المتصفح لـ GZIP وتستجيب باستجابة HTTP مضغوطة باستخدام content-encoding: gzip .

ولكن إذا كنت تستخدم موفر استضافة WordPress آخر ، أو إذا كنت تريد فقط تأكيد ما إذا كان موقع الويب الخاص بك يقدم محتوى GZIP المضغوط بشكل صحيح ، فتحقق دائمًا مما إذا كان ممكّنًا.

فيما يلي بعض الطرق المباشرة للتحقق من ضغط GZIP.

1. أدوات اختبار ضغط GZIP عبر الإنترنت

يعد استخدام أداة عبر الإنترنت أسهل طريقة للتحقق مما إذا كان ضغط GZIP ممكّنًا على موقع الويب الخاص بك. أوصي باستخدام أداة Check GZIP Compression المجانية أو أدوات اختبار ضغط HTTP. ما عليك سوى إدخال عنوان URL لموقع الويب الخاص بك والضغط على الزر " فحص " أو " اختبار ".

ستعرض لك هاتان الأداتان عبر الإنترنت تقريرًا موجزًا ​​حول ما إذا كان قد تم تمكين GZIP أم لا ، وكمية نقل البيانات التي قمت بحفظها (أو قد تحفظها) من خلال تقديم عنوان URL للاختبار مع تمكين ضغط GZIP.

ستعرض لك الأداة الأولى أيضًا معلومات أخرى ذات صلة مثل نوع خادم موقع الويب الخاص بك ونوع المحتوى ووقت الضغط.

اختبار الصفحة الرئيسية لـ Kinsta باستخدام أداة Check GZIP Compression
اختبار الصفحة الرئيسية لـ Kinsta باستخدام أداة Check GZIP Compression
اختبار Kinsta.com باستخدام أداة اختبار ضغط HTTP
اختبار Kinsta.com باستخدام أداة اختبار ضغط HTTP

يجب أن تلاحظ أن تحسين GZIP لا يتوقف عند صفحة الويب الخاصة بك فحسب ، بل يشمل أيضًا أصوله الثابتة القائمة على النصوص مثل أوراق الأنماط والنصوص والخطوط. إذا كنت تستخدم CDN لخدمة هذه الأصول ، فأنت بحاجة إلى التأكد من أن CDN تخدمها أيضًا مع تمكين ضغط GZIP.

تدعم معظم شبكات CDN الحديثة مثل Cloudflare و Kinsta CDN و KeyCDN و CloudFront ضغط GZIP. يمكنك اختبار الأصول التي تخدمها CDN لضغط GZIP عن طريق الارتباط مباشرة بالأصول.

اختبار ضغط GZIP للأصول التي تستضيفها CDN
اختبار ضغط GZIP للأصول التي تستضيفها CDN

في التقرير أعلاه ، يمكنك أن ترى أن Kinsta CDN تستخدم محرك KeyCDN ، وهو عبارة عن CDN سحب تقليدي. إذا كنت تستخدم Kinsta لاستضافة موقع WordPress الخاص بك ، فلا داعي للقلق بشأن أي شيء يتعلق بضغط GZIP لأنه يتم تمكينه افتراضيًا.

2. رأس استجابة HTTP "ترميز المحتوى: gzip"

الطريقة الثانية للتحقق مما إذا كان موقع الويب يقدم محتوى GZIP مضغوطًا عن طريق التحقق content-encoding: gzip HTTP.

هل سئمت من دعم استضافة WordPress من المستوى 1 دون إجابات؟ جرب فريق الدعم العالمي! تحقق من خططنا

يمكنك فتح Chrome DevTools أو Firefox Developer Tools والبحث عن عنوان الاستجابة هذا ضمن قسم Network .

لقد أظهرت بالفعل كيف يبدو في Chrome DevTools سابقًا. وإليك كيف يبدو في Firefox Developer Tools.

رأس "content-encoding: gzip" في Firefox Developer Tools
رأس "content-encoding: gzip" في Firefox Developer Tools

يمكنك أيضًا تمكين خيار "استخدام صفوف الطلبات الكبيرة" في لوحة إعدادات Chrome DevTools لرؤية الحجم الأصلي والمضغوط للصفحة. كما ترى أدناه ، تم تقليل حجم الصفحة الأصلية من 118 كيلو بايت إلى 22.9 كيلو بايت فقط بعد ضغطها باستخدام GZIP.

عرض أحجام الصفحات المضغوطة مقابل غير المضغوطة في Chrome Devtools
عرض أحجام الصفحات المضغوطة مقابل غير المضغوطة في Chrome Devtools

3. أدوات اختبار سرعة صفحة الويب

ستحذرك معظم أدوات اختبار سرعة مواقع الويب من عدم استخدام الضغط مثل GZIP لخدمة صفحات الويب الخاصة بك. من المحتمل أن يأتي العديد من القراء الذين يصلون إلى هذا المقال بسبب تحذيرات GZIP هذه بالضبط ، والتي ناقشتها بالفعل بالتفصيل أعلاه.

تحذيرات GZIP في أدوات اختبار سرعة صفحات الويب المختلفة
تحذيرات GZIP في أدوات اختبار سرعة صفحات الويب المختلفة

يمكنك استخدام أدوات مثل PageSPeed Insights و GTmetrix و Pingdom Tools و WebPageTest للتحقق مما إذا كان لديك ضغط GZIP ممكّنًا على موقع WordPress الخاص بك.

كيفية تفعيل ضغط GZIP

إذا لم يكن لديك ضغط GZIP ممكّنًا على خادم الويب الخاص بك ، فهناك العديد من الطرق للقيام بتمكينه. تعتمد الطريقة الدقيقة على خادم الويب الذي تستخدمه لاستضافة موقع الويب الخاص بك.

هام: كالعادة ، احتفظ بنسخة احتياطية من ملفات تهيئة الموقع والخادم قبل تحريرها.

تفعيل GZIP مع برنامج WordPress الإضافي

أسهل طريقة لتمكين ضغط GZIP على موقع WordPress الخاص بك هي استخدام التخزين المؤقت أو المكون الإضافي لتحسين الأداء.

على سبيل المثال ، إذا كنت تستضيف موقع WordPress الخاص بك على خادم ويب Apache ، فإن W3 Total Cache يتضمن خيارًا لتمكين ضغط GZIP ضمن لوحة إعدادات Browser Cache .

وبالمثل ، يتيح لك WP Rocket إضافة قواعد ضغط GZIP تلقائيًا. تعمل هذه المكونات الإضافية على تمكين ضغط GZIP عن طريق إضافة وحدة mod_deflate الخاصة بـ Apache إلى ملف htaccess.

تفعيل ضغط GZIP في W3 Total Cache
تفعيل ضغط GZIP في W3 Total Cache

تتطلب إضافات WordPress أذونات لتعديل الملفات على خادم الويب الخاص بك. إذا لم يكن لديهم الأذونات الصحيحة ، فسيفشلون أو يظهرون لك خطأ.

في مثل هذه الحالات ، تحتاج إلى الاتصال بموفر الاستضافة أو تعديل ملفات تكوين خادم الويب يدويًا باستخدام مقتطفات التعليمات البرمجية أدناه.

ملاحظة: قامت Kinsta بتحسين نظامها الأساسي من أجل الأداء العالي والموثوقية والأمان. يتضمن ذلك أيضًا تمكين ضغط GZIP افتراضيًا لجميع خطط الاستضافة الخاصة به.

نظرًا لأن المكونات الإضافية للتخزين المؤقت لجهات خارجية قد تتسبب في حدوث تعارض مع تحسينات الأداء الداخلي لـ Kinsta ، فإن Kinsta لا تسمح بمعظمها على خوادمها. لمزيد من المعلومات ، يمكنك الاطلاع على القائمة الكاملة للمكونات الإضافية المحظورة من Kinsta.

تفعيل GZIP على خادم ويب Apache

وفقًا لـ Netcraft ، يخدم Apache مواقع أكثر نشاطًا من أي خادم ويب آخر قيد الاستخدام اليوم. إنه أيضًا أحد خادمي الويب الموصى بهما بواسطة WordPress.

لتمكين ضغط GZIP على خوادم Apache ، تحتاج إلى استخدام mod_filter و mod_deflate وتهيئتهما بشكل صحيح باستخدام التوجيهات الصحيحة. سيقومون بتوجيه Apache لضغط إخراج الخادم قبل إرسالها إلى العملاء عبر الشبكة.

لديك خياران لتحرير تكوينات خادم Apache بناءً على مستوى الوصول لديك:

  1. إذا كان بإمكانك الوصول إلى ملف تكوين الخادم الرئيسي (يسمى عادةً httpd.conf ) ، فمن المستحسن استخدامه لتهيئة Apache حيث يمكن لملفات htaccess أن تبطئ Apache.
  2. إذا لم تتمكن من الوصول إلى ملف تكوين الخادم الرئيسي ، وهو ما يحدث عادةً مع معظم موفري الاستضافة المشتركة في WordPress ، فأنت بحاجة إلى تكوين Apache باستخدام ملف htaccess .

الخيار الأول مخصص فقط لمسؤولي النظام ، حيث نادرًا ما يسمح لك موفرو الاستضافة بتحرير ملف تكوين الخادم الرئيسي. شرح كيفية القيام بذلك بهذه الطريقة خارج نطاق هذه المقالة. يمكنك الرجوع إلى نموذج Apache Server Configs الذي تمت مشاركته بواسطة مشروع HTML5 Boilerplate ووثائق Apache للبدء.

الخيار الثاني مثالي لمعظم مالكي مواقع WordPress حيث يسمح لك العديد من موفري الاستضافة المشتركة بتعديل ملفات htaccess .

للبدء ، استخدم SFTP أو مدير الملفات عبر الإنترنت لمضيفك للعثور على ملف .htaccess في الدليل الجذر لموقع WordPress الخاص بك. ثم أضف مقتطف الشفرة أدناه إليه.

هام: تأكد من أن وحدة mod_filter نشطة على الخادم الخاص بك. يقوم معظم مضيفي الويب بتمكينه افتراضيًا ، ولكن إذا لم يكن الأمر كذلك ، فلن يعمل التوجيه AddOutputFilterByType وقد يؤدي إلى ظهور خطأ HTTP 500. يمكنك التحقق من سجلات أخطاء الخادم إذا كانت لديك أية مشكلات بعد إضافة مقتطف الشفرة أدناه.

 <IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for ancient browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>

أضف الكود أعلاه فقط بعد التوجيهات الحالية لملف htaccess الخاص بك. احفظ الملف ثم تحقق مما إذا كان يمكّن ضغط GZIP على الخادم الخاص بك.

مثال على ملف Apache .htaccess بعد تمكين ضغط GZIP
مثال على ملف Apache .htaccess بعد تمكين ضغط GZIP

يجب أن يخدم خادم الويب الآن الملفات المضغوطة لجميع امتدادات الملفات المذكورة أعلاه. يمكنك تأكيد ذلك باستخدام أي من الطرق المذكورة سابقًا.

إذا كنت تريد التأكد من أن الخوادم الوكيلة وبرامج الأمان من جانب العميل لا تتداخل مع ضغط GZIP ، فيمكنك استبدال مقتطف الشفرة أعلاه بالمقتطف أدناه.

 <IfModule mod_deflate.c> # force compression for clients that mangle 'Accept-Encoding' request headers <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding </IfModule> </IfModule> # compress all output with one of the following file extensions <IfModule mod_filter.c> AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/geo+json" \ "application/vnd.ms-fontobject" \ "application/wasm" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "font/otf" \ "font/ttf" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "text/cache-manifest" \ "text/calendar" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/markdown" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> # define and map media types to their appropriate encoding type # Using SVG format (Scalable Vector Graphics) is highly recommended to # load logos, icons, text, and simple images. You can compress .SVG files # further using GZIP to create .SVGZ files. However, most browsers don't # know that they need to decompress them first if they're not served # without an appropriate 'content-encoding' HTTP response header. Thus, # these images wouldn't show up in the browser. Hence, this module. <IfModule mod_mime.c> AddType image/svg+xml svg svgz AddEncoding gzip svgz </IfModule> </IfModule>

يمكنك معرفة المزيد حول جميع التوجيهات المستخدمة هنا من خلال الانتقال إلى مستودع الكود الخاص به واتباع جميع الموارد المرتبطة به.

قم بتمكين GZIP على Nginx Web Server

وفقًا لـ Netcraft ، يعد Nginx خادم الويب الأكثر استخدامًا بواسطة أجهزة الكمبيوتر التي تواجه الويب. إذا استمر الاتجاه الحالي ، فسوف يتفوق قريبًا على Apache ليصبح خادم الويب الأكثر استخدامًا من قبل المواقع النشطة. حتى Kinsta تستخدم Nginx لدعم حلول الاستضافة المحسّنة للأداء لـ WordPress.

يمكنك تمكين ضغط GZIP على خادم الويب Nginx باستخدام التوجيهات المحددة في ngx_http_gzip_module.

للبدء ، أضف التعليمات الواردة أدناه إلى ملف nginx.conf الخاص بك. عادةً ، يمكنك العثور على هذا الملف في موقع /etc/nginx/nginx.conf الخاص بالخادم.

 # enables GZIP compression gzip on; # compression level (1-9) # 6 is a good compromise between CPU usage and file size gzip_comp_level 6; # minimum file size limit in bytes to avoid negative compression outcomes gzip_min_length 256; # compress data for clients connecting via proxies gzip_proxied any; # directs proxies to cache both the regular and GZIP versions of an asset gzip_vary on; # disables GZIP compression for ancient browsers that don't support it gzip_disable "msie6"; # compress outputs labeled with the following file extensions or MIME-types # text/html MIME-type is enabled by default and need not be included gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/vnd.ms-fontobject application/wasm application/x-web-app-manifest+json application/xhtml+xml application/xml font/eot font/otf font/ttf image/bmp image/svg+xml text/cache-manifest text/calendar text/css text/javascript text/markdown text/plain text/xml text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

إذا كان موقعك يعرض ملفات JS و CSS كبيرة الحجم ، فيمكنك زيادة حجم المخزن المؤقت المستخدم للضغط عن طريق إضافة التوجيه التالي إلى ملف nginx.conf الخاص بك:

 # sets the 'number' and 'size' of buffers for GZIP compression # default buffer size is 4K or 8K depending on the platform gzip_buffers 16 8k;

لا تنس إعادة تحميل Nginx بعد حفظ ملف nginx.conf .

 sudo service nginx reload

أخيرًا ، يجب أن تختبر لمعرفة ما إذا كان قد تم تمكين ضغط GZIP على الخادم. يمكنك الرجوع إلى وثائق Nginx للحصول على قائمة محدثة بجميع توجيهات ngx_http_gzip_module .

تفعيل GZIP على خادم ويب IIS

تعد خدمات معلومات الإنترنت من Microsoft (IIS) ثالث أكثر خوادم الويب شيوعًا المستخدمة حاليًا. يتم نشر IIS بشكل أساسي في بيئات المؤسسات التي تعمل على Windows ، وخاصة لإعداد خوادم الإنترانت والإكسترانت الخاصة بالشركة.

نادرًا ما يتم استخدامه لاستضافة مواقع WordPress بسبب مشكلات التوافق المختلفة.

ومع ذلك ، إذا وجدت نفسك في إحدى تلك المواقف النادرة حيث تحتاج إلى تمكين ضغط GZIP على IIS ، يمكنك الرجوع إلى وثائق Microsoft للبدء. قد تجد أيضًا موضوع Stack Overflow هذا مفيدًا.

بدائل لضغط GZIP

يتقدم عالم ضغط البيانات على الويب دائمًا. مع زيادة متوسط ​​حجم الصفحة باستمرار ، تحاول تقنية الويب اللحاق به أيضًا لجعل نقل البيانات عبر الويب أكثر كفاءة.

زيادة حجم الصفحة بمرور الوقت (المصدر: HTTPArchive)
زيادة حجم الصفحة بمرور الوقت (المصدر: HTTPArchive)

اكتسبت خوارزمية ضغط جديدة شعبية واسعة خلال السنوات القليلة الماضية: Brotli. كان ضغط خطوط الويب WOFF2 هو التركيز الرئيسي لـ Brotli في الأصل ، ولكنه توسع منذ ذلك الحين لدعم الضغط لأي نوع من البيانات.

يقوم Brotli بضغط البيانات بشكل أفضل من GZIP ، ولكنه يتطلب الكثير من الوقت والموارد لضغط البيانات. ومع ذلك ، فإن وقت تخفيف الضغط الخاص به يمكن مقارنته بوقت GZIP ، على الرغم من أنه لا يزال أبطأ قليلاً.

دعم Brotli عبر المتصفحات المختلفة
دعم Brotli عبر المتصفحات المختلفة

تدعم معظم المتصفحات Brotli اليوم ، لكن استخدامه على مواقع WordPress لا يزال معقدًا إلى حد ما. يجب أن تستضيف موقعك مع مزود استضافة يدعم Brotli أو يسمح لك بتثبيت مكتبة Brotli. معظم مضيفي WordPress المُدارين لا يدعمونها بشكل مباشر حتى الآن ، ولكن إذا كنت تستخدم CDN مثل Cloudflare أو KeyCDN ، فيمكنك تمكينه بسهولة.

يُظهر Brotli وعدًا كبيرًا لأصول الضغط الثابتة. نشر Akamai مقالاً مفصلاً يقارن بين Brotli و GZIP. You can check it out to learn more about Brotli.

Ready to speed up your site? ️ Enabling GZIP compression on your web server is one of the simplest and most efficient ways to achieve that. Learn how with this step-by-step walkthrough ️ Click to Tweet

ملخص

A well-optimized web is great for everyone. Users love snappier websites, website owners love the reduced hosting charges, and web hosts love the optimization achieved on their servers. Compression techniques like GZIP are one of the best ways to speed up page load times for your visitors.

WordPress site owners can speed up their sites instantly by enabling GZIP compression. Kinsta enables it by default on all its servers, but for others, this article covers multiple ways to enable GZIP compression on various web servers.

Speed is critical for any website. Just compress!