Sunucumun GZipped içeriği sunup sunmadığını nasıl anlayabilirim?


160

Bir NGinx sunucusunda bir web uygulamam var. gzip onConf dosyasında ayarladım ve şimdi çalışıp çalışmadığını görmeye çalışıyorum. YSlow bunun olmadığını söylüyor, ancak testi yapan 6 web sitesinin 5'i öyle olduğunu söylüyor. Bu konuda nasıl kesin bir cevap alabilirim ve sonuçlarda neden bir fark var?

Yanıtlar:


229

Olası bir cevap şaşırtıcı değil, şöyle görünüyor curl:

$ curl http://example.com/ --silent --write-out "%{size_download}\n" --output /dev/null
31032
$ curl http://example.com/ --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null
2553

İkinci durumda, istemci sunucuya içerik kodlamasını desteklediğini söyler ve yanıtın gerçekten daha kısa, sıkıştırılmış olduğunu görebilirsiniz.


3
Bu doğrudur, ancak gzip belirli dosya türlerini sıkıştırmak ve diğerlerini dışlamak için yapılandırılabilir. Bu nedenle, bu testi kullanarak kıvırdığınız dosyaların sıkıştırılacak türde olduğundan emin olun.
Tyler Biscoe

5
Tüm yönlendirmeleri takip etmek için -Lbayrağın kullanılmasını öneririm curl, örneğin www www.olmayandan size_download_x sonucunun başka bir sonucu yanlış olabilir
vladkras

Genç geliştiricilerimde bir şeyi etkileyebilseydim, sağlam bir unix temeline sahip olmanın önemi. CURL için +1. İlk başta kafa karıştırıcı, bildiğinizde hayat kurtarıcı.
Akron

105

Güncelleme

Chrome rapor verme şeklini değiştirdi (ilgilendiğinde orijinal yanıta bakın). Geliştirici Araçlarını (F12) kullanarak söyleyebilirsiniz. Ağ sekmesine gidin, incelemek istediğiniz dosyayı seçin ve ardından sağdaki Başlıklar sekmesine bakın. Eğer gzip ederseniz, bunu İçerik Kodlamasında görürsünüz.

Bu örnekte, slider.jpg dosyası gerçekten sıkıştırılmıştır.

resim açıklamasını buraya girin

Bunu bulunduğunuz sayfayla karşılaştırın ve bir png dosyasına bakın, böyle bir atama görmeyeceksiniz.

resim açıklamasını buraya girin

Açık olmak gerekirse, bunun nedeni jpg ve diğerinin png olması değil. Çünkü biri gziplenmiş, diğeri değil.


Önceki Cevap

Chrome'da, Geliştirici Araçlarını kaldırır ve Ağ sekmesine giderseniz, sıkıştırma yoksa aşağıdakileri gösterir:

resim açıklamasını buraya girin

Ve eğer sıkıştırma varsa:

resim açıklamasını buraya girin

Başka bir deyişle, aynı sayı, üst ve alt, sıkıştırma olmadığı anlamına gelir.


3
Yanıt başlıklarını incelemek daha iyi olabilir. Bu yöntem, gzip sıkıştırmanın kullanılmaya başlanıp başlatılmadığını veya başka bir sıkıştırma algoritması olup olmadığını söylemez.
Samuel

4
Ağ sekmesindeki Chrome Geliştirici Araçları'nda, istek için öğe adını / bağlantısını tıklayın; Yanıt Başlıkları'nı bu şekilde inceleyebilir gzipve İçerik Kodlaması anahtarını görebilirsiniz! [Ekran görüntüsü] [1] [1]: i.stack .imgur.com / Bpb5W.png (http://content.screencast.com/users/…
d48

1
Son krom sürümleri (Sürüm 44.0.2403.130 m) boyut / içerik ayrıntılarını göstermiyor gibi görünüyor - gzip ayrıntılarını kastediyorum - i.imgur.com/MTz7DCM.png . Nedenini bilen var mı?
Andy Dufresne

33

Yanıt başlıklarına bakın. FireFox'ta Firebug ile kontrol edebilirsiniz.

Content-Encoding    gzip

Sunucu gzip içeriğini destekliyorsa, bu görüntülenmelidir.


9
Bunu yalnızca müşteriniz "Kabul Et-Kodlama: gzip, deflate" gönderdiyse alırsınız
Maciej Swic

2
Dosya 304 durumu ile sunulduğu gibi, orijinal dosyanın kodlamasını görmek zor yenileme, önbelleğe alınmış sürüm zaten sıkıştırılmış gibi görünüyor! (benim durumumda, İçerik Kodlaması yerine bir ETag başlığı görüyorum)
ptim

11

Chrome'un yeni sürümünde, Geliştirici araçları> ağ, Sütun adını sağ tıklayıp içerik kodlama seçeneğini belirleyebilir ve bu sütunu ekleyebilirsiniz (resimde kara kutu).

ve o gzip içeriğinin boyutunu @ Açık Kaynak olarak görmek istiyorsanız, Görünüm'ün yanındaki simgeye tıklayabilirsiniz (resimde Yeşil kutu olarak görüntülenir).

böylece hangi içeriğin gzip etkin olduğunu görebilirsiniz.

resim açıklamasını buraya girin


Bu harika bir yanıt, ancak <kbd> İçerik Kodlaması </kbd> <kbd> Yanıt Başlıkları </kbd> altına taşındı.
Dan Dascalescu


8

Zoul'un cevabına dayanarak bu senaryoyu yazdım:

#!/bin/bash

URL=$1
PLAIN="$(curl $URL --silent --write-out "%{size_download}\n" --output /dev/null)"
GZIPPED="$(curl $URL --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null)"

if test $PLAIN -gt $GZIPPED
then echo "supported"
else echo "unsupported"
fi

misal:

$ ./script.sh https://example.com/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.