Wie kann ich feststellen, ob mein Server GZipped-Inhalte bereitstellt?

160

Ich habe eine Webanwendung auf einem NGinx-Server. Ich habe gzip onin der conf-Datei festgelegt und jetzt versuche ich zu sehen, ob es funktioniert. YSlow sagt, dass dies nicht der Fall ist, aber 5 von 6 Websites, die den Test durchführen, geben an, dass dies der Fall ist. Wie kann ich eine eindeutige Antwort darauf erhalten und warum gibt es einen Unterschied in den Ergebnissen?

Johnny
quelle

Antworten:

229

Es sieht so aus, als ob eine mögliche Antwort nicht überraschend ist 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

Im zweiten Fall teilt der Client dem Server mit, dass er die Inhaltscodierung unterstützt, und Sie können sehen, dass die Antwort tatsächlich kürzer und komprimiert war.

Zoul
quelle
3
Dies ist wahr, aber gzip kann so konfiguriert werden, dass bestimmte Dateitypen komprimiert und andere ausgeschlossen werden. Stellen Sie daher sicher, dass die Dateien, die Sie mit diesem Test locken, vom Typ sind, der komprimiert wird.
Tyler Biscoe
5
Ich würde vorschlagen, auch -Lflag für curlzu verwenden, um alle Weiterleitungen zu verfolgen, z. B. von Nicht-WWW zu www.anderen Ergebnissen von size_download kann falsch sein
vladkras
Wenn ich meinen jüngeren Entwicklern eines beeindrucken könnte, wäre es wichtig, eine solide Unix-Grundlage zu haben. +1 für CURL. Es ist zunächst verwirrend, ein Lebensretter, wenn Sie es wissen.
Akron
105

Aktualisieren

Chrome hat die Art und Weise der Berichterstattung geändert (siehe Originalantwort, wenn Sie interessiert sind). Sie können dies mithilfe der Entwicklertools (F12) feststellen. Gehen Sie zur Registerkarte Netzwerk, wählen Sie die Datei aus, die Sie untersuchen möchten, und sehen Sie sich dann rechts die Registerkarte Überschriften an. Wenn Sie gezippt sind, sehen Sie das in der Inhaltskodierung.

In diesem Beispiel wird slider.jpg tatsächlich gezippt.

Geben Sie hier die Bildbeschreibung ein

Vergleichen Sie das mit genau dieser Seite, auf der Sie sich befinden, und sehen Sie sich eine PNG-Datei an. Sie werden keine solche Bezeichnung sehen.

Geben Sie hier die Bildbeschreibung ein

Nur um klar zu sein, es liegt nicht daran, dass man ein JPG und einer ein PNG ist. Es ist, weil einer gezippt ist und der andere nicht.


Vorherige Antwort

Wenn Sie in Chrome die Entwicklertools aufrufen und zur Registerkarte "Netzwerk" wechseln, wird Folgendes angezeigt, wenn keine Komprimierung erfolgt:

Geben Sie hier die Bildbeschreibung ein

Und das Folgende, wenn es eine Komprimierung gibt:

Geben Sie hier die Bildbeschreibung ein

Mit anderen Worten bedeutet die gleiche Zahl oben und unten keine Komprimierung.

Software-Propheten
quelle
3
Es ist möglicherweise besser, die Antwortheader zu überprüfen. Diese Methode sagt nicht aus, ob die gzip-Komprimierung oder ein anderer Komprimierungsalgorithmus verwendet wird.
Samuel
4
Klicken Sie in den Chrome Developer Tools auf der Registerkarte "Netzwerk" auf den Namen / Link des Assets für die Anforderung. Sie können die Antwortheader wie folgt überprüfen und gzipnach dem Schlüssel für die Inhaltscodierung suchen
d48
1
Die aktuellen Chrome-Versionen (Version 44.0.2403.130 m) scheinen nicht die Größen- / Inhaltsdetails anzuzeigen - ich meine die gzip-Details - i.imgur.com/MTz7DCM.png . Kennt jemand den Grund warum?
Andy Dufresne
33

Siehe in den Antwortheadern. In FireFox können Sie mit Firebug überprüfen.

Content-Encoding    gzip

Wenn der Server gzip-Inhalte unterstützt, sollte dies angezeigt werden.

Ved
quelle
9
Sie erhalten dies nur, wenn Ihr Client "Accept-Encoding: gzip, deflate" gesendet hat
Maciej Swic
2
Schwer zu aktualisieren, um die Codierung der Originaldatei zu sehen. Wenn die Datei mit dem Status 304 bereitgestellt wird, scheint die zwischengespeicherte Version bereits entpackt zu sein. (In meinem Fall sehe ich eher einen ETag-Header als eine
Inhaltscodierung
11

In der neuen Version von Chrome, Entwicklertools> Netzwerk, können Sie mit der rechten Maustaste auf den Spaltennamen klicken, die Option für die Inhaltscodierung auswählen und diese Spalte hinzufügen (schwarzes Feld im Bild).

und wenn Sie die Größe dieses gzip-Inhalts als @Outfast Source anzeigen möchten, können Sie auf das Symbol neben Ansicht klicken (im Bild als grünes Feld angezeigt).

So können Sie sehen, welcher Inhalt für gzip aktiviert ist.

Geben Sie hier die Bildbeschreibung ein

Krupall
quelle
Dies ist eine großartige Antwort, aber <kbd> Content-Encoding </ kbd> wurde unter <kbd> Antwortheader </ kbd> verschoben.
Dan Dascalescu
8

Ich habe dieses Skript basierend auf der Antwort des Zoul geschrieben:

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

Beispiel:

$ ./script.sh https://example.com/
Nate Symer
quelle