2012-02-08 8 views
19

Ho apache con mod_deflate abilitato. Mi piacerebbe scoprire la dimensione della pagina con mod_deflate attivata e disattivata e confrontare la quantità di prestazioni ottenute in termini di dimensioni. In arricciatura, mi sembra di chiedere al server il contenuto gzip usando --compressed e di inviare il normale, ma non riesco a trovare la dimensione di quella pagina. Qualche idea di come farlo?Può 8 usare curl per confrontare le dimensioni della pagina con deflate abilitato e senza usarlo

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 
+0

Puoi fare una normale OTTIENI e confronti il ​​corpo della risposta? – alex

risposta

41

penso che l'unico modo affidabile per ottenere la dimensione, è quello di scaricare il file in realtà. Tuttavia, ricciolo offre un'opzione molto conveniente solo per l'emissione dei dati di interesse

-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. 

che significa che si può fare qualcosa di simile:

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

uscita:

8437 

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

uscita:

3225 

Successivamente il tuo confronto dovrebbe essere banale.

+0

Ha funzionato. Grazie. Ma c'è qualche opzione in curl che permette anche di scaricare tutti i file collegati (js, css, immagini) nel sito dato per ottenere la dimensione totale della pagina. – Anjesh

+0

Voglio solo aggiungere che emette in byte. Da 'man curl':' size_download La quantità totale di byte che sono stati scaricati. –

4

Copia/incolla pronto e leggibile

Sulla base @flesk answer e on this Ecco una versione leggibile dello 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 

uscita:

URI: https://stackoverflow.com/q/9190190/1480391 
Uncompressed size : 106.69 KiB 
Compressed size : 24.47 KiB 
+1

Impressionante! Ho incollato questo in un file eseguibile sul mio 'PATH' e ho sostituito' confronta https: // stackoverflow.com/q/9190190/1480391' con 'confronta $ 1'. Ora posso solo eseguire 'compress-compare example.com' per ottenere quello che voglio. Dove è stata tutta la mia vita? – bowheart

Problemi correlati