web-dev-qa-db-fra.com

Comment utiliser curl pour comparer la taille de la page avec le dégonflage activé et sans l'utiliser

J'ai Apache avec mod_deflate activée. Je souhaite connaître la taille de la page avec mod_deflate activé et non activé, et comparez les performances obtenues en taille. En boucle, je semble demander au serveur le contenu compressé en utilisant --compressed et pour envoyer la normale, mais ne semble pas trouver la taille de cette page. Une idée de comment faire ça?

curl --head http://site

HTTP/1.1 200 OK
Date: Wed, 08 Feb 2012 08:48:04 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.12
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=ce39b051a9cd493cbe4a86056e11d61f; path=/
Vary: Accept-Encoding
Content-Type: text/html

curl --head --compressed http://site

HTTP/1.1 200 OK
Date: Wed, 08 Feb 2012 08:48:19 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.12
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=513b8ac5818fd043471c8aac44355898; path=/
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Content-Type: text/html
39
Anjesh

Je pense que le seul moyen fiable d'obtenir la taille est de télécharger le fichier. Cependant, curl offre une option très pratique pour sortir uniquement les données d'intérêt

-w/--write-out <format>
    Defines what to display on stdout after a completed and successful operation.

[...]

size_download  The total amount of bytes that were downloaded.

ce qui signifie que vous pouvez faire quelque chose comme ceci:

curl -so /dev/null http://www.whatsmyip.org/http-compression-test/ -w '%{size_download}'

Production:

8437

Et pour obtenir la taille compressée:

curl --compressed -so /dev/null http://www.whatsmyip.org/http-compression-test/ -w '%{size_download}'

Production:

3225

Après cela, votre comparaison devrait être triviale.

71
flesk

Copier/coller prêt et lisible par l'homme

Basé sur @ réponse flesk et à ce sujet voici une version lisible par l'homme du script:

#!/usr/bin/env bash
set -e

bytesToHuman() {
    b=${1:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)
    while ((b > 1024)); do
        d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
        b=$((b / 1024))
        let s++
    done
    echo "$b$d ${S[$s]}"
}

compare() {
  echo "URI: ${1}"

  SIZE=$(curl -so /dev/null "${1}" -w '%{size_download}')
  SIZE_HUMAN=$(bytesToHuman "$SIZE")
  echo "Uncompressed size : $SIZE_HUMAN"

  SIZE=$(curl --compressed -so /dev/null "${1}" -w '%{size_download}')
  SIZE_HUMAN=$(bytesToHuman "$SIZE")
  echo "Compressed size   : $SIZE_HUMAN"
}

compare https://stackoverflow.com/q/9190190/1480391

Production:

URI: https://stackoverflow.com/q/9190190/1480391
Uncompressed size : 106.69 KiB
Compressed size   : 24.47 KiB
15
Yves M.