الضغط إعدادٌ واحد أثره كبير وفوريّ على النصّ — HTML وCSS وJavaScript وJSON وSVG. ولا أثر له على ما هو مضغوط أصلًا، وطلبه هناك يكلّف معالجًا بلا مقابل.

شغّله

gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript
           text/xml application/xml image/svg+xml;

المستوى 5 هو الوسط المفيد. أمّا المستوى 9 فيكلّف معالجًا أكثر بوضوح مقابل واحد أو اثنين في المئة، في كل طلب على حدة.

وما لا يُضغط

صيغ JPEG وPNG وWebP وMP4 وZIP مضغوطة أصلًا. وتمرير gzip عليها يجعل الملفّ أكبر قليلًا ويحرق المعالج وهو يفعل. والاستثناء هو image/svg+xml — فـSVG نصّ.

وBrotli حيث يتوفّر

brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/json application/javascript image/svg+xml;

Brotli أصغر من gzip بنحو ١٥ إلى ٢٠٪ على النصّ في العادة. أبقِ gzip مضبوطًا إلى جانبه: المتصفّح يقول ما يقبله والخادم يختار.

وتأكّد أنه يحدث

curl -sI -H 'Accept-Encoding: gzip, br' https://yourdomain.com/ | grep -i content-encoding

غياب ترويسة content-encoding يعني أن لا شيء يُضغط — وغالبًا لأن وسيطًا في المقدّمة ينزع ترويسة الطلب.

وقيمة gzip_min_length تهمّ: ضغط ردٍّ من ٢٠٠ بايت يكلّف أكثر ممّا يوفّر، لأن حِمل الترويسة حجمه ثابت. والكيلوبايت حدٌّ أدنى معقول.