Bagaimana saya bisa tahu jika server saya menyajikan konten GZipped?


160

Saya punya webapp di server NGinx. Saya mengatur gzip onfile conf dan sekarang saya mencoba untuk melihat apakah itu berfungsi. YSlow mengatakan itu bukan, tetapi 5 dari 6 situs web yang melakukan tes mengatakan itu. Bagaimana saya bisa mendapatkan jawaban yang pasti tentang ini dan mengapa ada perbedaan dalam hasilnya?

Jawaban:


229

Sepertinya satu jawaban yang mungkin adalah, tidak mengejutkan, 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

Dalam kasus kedua, klien memberi tahu server bahwa ia mendukung penyandian konten dan Anda dapat melihat bahwa responsnya memang lebih pendek, terkompresi.


3
Ini benar, tetapi gzip dapat dikonfigurasi untuk mengompres jenis file tertentu, dan mengecualikan yang lain. Jadi pastikan bahwa file yang Anda gunakan menggunakan tes ini adalah tipe yang akan dikompresi.
Tyler Biscoe

5
Saya akan menyarankan menggunakan -Lflag untuk curljuga mengikuti semua pengalihan, mis. Dari non-www ke www.hasil size_download mungkin salah
vladkras

Jika saya dapat mengesankan satu hal pada devs saya yang lebih muda, pentingnya memiliki fondasi unix yang solid. +1 untuk CURL. Awalnya membingungkan, penyelamat saat Anda mengetahuinya.
Akron

105

Memperbarui

Chrome mengubah cara melaporkannya (lihat jawaban asli jika tertarik). Anda bisa tahu menggunakan Alat Pengembang (F12). Buka tab Jaringan, pilih file yang ingin Anda periksa dan kemudian lihat tab Header di sebelah kanan. Jika Anda di-zip, maka Anda akan melihatnya di Content-Encoding.

Dalam contoh ini, slider.jpg memang sedang di-gzip.

masukkan deskripsi gambar di sini

Bandingkan itu dengan halaman yang Anda lihat dan lihat file png, Anda tidak akan melihat sebutan itu.

masukkan deskripsi gambar di sini

Untuk lebih jelasnya, itu bukan karena satu adalah jpg dan satu adalah png. Itu karena yang satu gzip dan yang lain tidak.


Jawaban Sebelumnya

Di Chrome, jika Anda menarik Alat Pengembang dan pergi ke tab Jaringan, maka itu akan menunjukkan yang berikut jika tidak ada kompresi:

masukkan deskripsi gambar di sini

Dan berikut ini jika ada kompresi IS:

masukkan deskripsi gambar di sini

Dengan kata lain, angka yang sama, atas dan bawah, berarti tidak ada kompresi.


3
Mungkin lebih baik untuk memeriksa header respons. Metode ini tidak mengatakan apakah kompresi gzip mulai digunakan atau algoritma kompresi lainnya.
Samuel

4
Di Alat Pengembang Chrome di tab Jaringan, klik pada nama aset / tautan untuk permintaan dan Anda dapat memeriksa Header Respons seperti itu dan lihat gzipkunci Pengodean Konten! [Tangkapan layar] [1] [1]: i.stack .imgur.com / Bpb5W.png (http://content.screencast.com/users/…
d48

1
Versi chrome terbaru (Versi 44.0.2403.130 m) tampaknya tidak menunjukkan detail ukuran / isi - maksud saya detail gzip - i.imgur.com/MTz7DCM.png . Adakah yang tahu alasannya?
Andy Dufresne

33

Lihat di header respons. Di FireFox Anda dapat memeriksa dengan Firebug.

Content-Encoding    gzip

Jika server mendukung konten gzip maka ini harus ditampilkan.


9
Anda hanya mendapatkan ini jika klien Anda telah mengirim "Terima-Pengkodean: gzip, deflate"
Maciej Swic

2
Susah menyegarkan untuk melihat penyandian file asli, seperti ketika file disajikan dengan status 304, sepertinya versi yang di-cache sudah dibuka ritsleting! (dalam kasus saya, saya melihat header ETag daripada Content-Encoding)
ptim

11

Dalam versi baru chrome, Developer tools> network, Anda dapat mengklik kanan pada nama kolom, dan memilih opsi pengkodean konten dan menambahkan kolom itu (kotak hitam di gambar).

dan jika Anda ingin melihat ukuran konten gzip itu, sebagai @Outfast Source - daripada Anda dapat mengklik ikon yang ada di sebelah View (ditampilkan sebagai kotak Hijau pada gambar).

sehingga Anda dapat melihat konten mana yang diaktifkan gzip.

masukkan deskripsi gambar di sini


Ini adalah jawaban yang bagus, tetapi <kbd> Pengkodean Konten </kbd> telah dipindahkan di bawah <kbd> Header Respons </kbd>.
Dan Dascalescu


8

Saya menulis skrip ini berdasarkan jawaban zoul:

#!/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

contoh:

$ ./script.sh https://example.com/
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.