Comment puis-je savoir si mon serveur diffuse du contenu GZipped?


160

J'ai une webapp sur un serveur NGinx. J'ai mis gzip ondans le fichier conf et maintenant j'essaye de voir si cela fonctionne. YSlow dit que non, mais 5 sites Web sur 6 qui font le test le disent. Comment puis-je obtenir une réponse définitive à ce sujet et pourquoi y a-t-il une différence dans les résultats?

Réponses:


229

Il semble qu'une réponse possible soit, sans surprise 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

Dans le second cas, le client indique au serveur qu'il prend en charge le codage de contenu et vous pouvez voir que la réponse était en effet plus courte, compressée.


3
C'est vrai, mais gzip peut être configuré pour compresser certains types de fichiers et en exclure d'autres. Assurez-vous donc que les fichiers que vous curlez en utilisant ce test sont du type qui sera compressé.
Tyler Biscoe

5
Je suggérerais d'utiliser le -Ldrapeau pour curlsuivre toutes les redirections, par exemple de non-www à www.sinon, le résultat de size_download peut être erroné
vladkras

Si je pouvais impressionner une chose sur mes jeunes développeurs, c'est l'importance d'avoir une base solide unix. +1 pour CURL. C'est déroutant au début, un sauveur de vie quand vous le savez.
Akron

105

Mettre à jour

Chrome a changé la façon dont il signale (voir la réponse originale si vous êtes intéressé). Vous pouvez le dire en utilisant les outils de développement (F12). Accédez à l'onglet Réseau, sélectionnez le fichier que vous souhaitez examiner, puis regardez l'onglet En-têtes sur la droite. Si vous êtes gzippé, vous le verrez dans Content-Encoding.

Dans cet exemple, slider.jpg est en effet gzippé.

entrez la description de l'image ici

Comparez cela à cette même page sur laquelle vous êtes et regardez un fichier png, vous ne verrez pas une telle désignation.

entrez la description de l'image ici

Pour être clair, ce n'est pas parce que l'un est un jpg et l'autre est un png. C'est parce que l'un est gzippé et l'autre non.


Réponse précédente

Dans Chrome, si vous ouvrez les outils de développement et accédez à l'onglet Réseau, il affichera ce qui suit s'il n'y a pas de compression:

entrez la description de l'image ici

Et ce qui suit s'il y a une compression:

entrez la description de l'image ici

En d'autres termes, le même nombre, haut et bas, signifie aucune compression.


3
Il peut être préférable d'inspecter les en-têtes de réponse. Cette méthode ne dit pas si la compression gzip est utilisée ou un autre algorithme de compression.
Samuel

4
Dans les outils de développement Chrome sur l'onglet Réseau, cliquez sur le nom / lien de l'élément pour la demande et vous pouvez inspecter les en-têtes de réponse comme ceci et voir gzipla clé Content-Encoding! [Capture d'écran] [1] [1]: i.stack .imgur.com / Bpb5W.png (http://content.screencast.com/users/…
d48

1
Les versions récentes de chrome (Version 44.0.2403.130 m) ne semblent pas afficher les détails de taille / contenu - je veux dire les détails de gzip - i.imgur.com/MTz7DCM.png . Quelqu'un sait-il pourquoi?
Andy Dufresne

33

Voir dans les en-têtes de réponse. Dans FireFox, vous pouvez vérifier avec Firebug.

Content-Encoding    gzip

Si le serveur prend en charge le contenu gzip, cela doit être affiché.


9
Vous n'obtiendrez cela que si votre client a envoyé "Accept-Encoding: gzip, deflate"
Maciej Swic

2
Actualisation matérielle pour voir l'encodage du fichier d'origine, car lorsque le fichier est servi avec le statut 304, il semble que la version en cache est déjà décompressée! (dans mon cas, je vois un en-tête ETag plutôt que Content-Encoding)
ptim

11

Dans la nouvelle version de chrome, outils de développement> réseau, vous pouvez cliquer avec le bouton droit sur le nom de la colonne, sélectionner l'option de codage du contenu et ajouter cette colonne (boîte noire dans l'image).

et si vous voulez voir la taille de ce contenu gzip, en tant que @Outfast Source - que vous pouvez cliquer sur l'icône qui se trouve à côté de Afficher (affichée sous forme de boîte verte dans l'image).

afin que vous puissiez voir quel contenu est activé par gzip.

entrez la description de l'image ici


C'est une excellente réponse, mais <kbd> Content-Encoding </kbd> a été déplacé sous <kbd> Response Headers </kbd>.
Dan Dascalescu


8

J'ai écrit ce script basé sur la réponse du 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

exemple:

$ ./script.sh https://example.com/
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.