2012-02-08 8 views
19

Tengo Apache con mod_deflate activado. Me gustaría conocer el tamaño de la página con mod_deflate habilitado y sin, y comparar cuánto rendimiento se logra en tamaño. En curl, parece que le pido al servidor contenido en gzip usando --compressed y para enviar lo normal, pero parece que no puedo encontrar el tamaño de esa página. ¿Alguna idea de cómo hacerlo?Puede 8 usar curl para comparar el tamaño de la página con desinflado habilitado y sin 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

Puede usted hacer una normal de OBTENER y comparar el cuerpo de respuesta? – alex

Respuesta

41

Creo que la única manera confiable de obtener el tamaño, es en realidad para descargar el archivo. Sin embargo, rizo ofrece una opción muy conveniente sólo para la salida de datos de interés

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

que significa que puede hacer algo como esto:

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

Salida:

8437 

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

Salida:

3225 

Después de eso, su comparación debe ser trivial.

+0

Funcionó. Gracias. Pero, ¿hay alguna opción en curl que también permita descargar todos los archivos vinculados (js, css, images) en el sitio dado para obtener el tamaño total de la página? – Anjesh

+0

Solo quiero agregar que produce en bytes. From 'man curl':' size_download La cantidad total de bytes que se descargaron. –

4

Copia/pega listo y legible

humano basado en @flesk answer y on this aquí es una versión legible por humanos del guión:

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

Salida:

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

¡Impresionante! Pegué esto en un archivo ejecutable en mi 'PATH' y reemplacé' compare https: // stackoverflow.com/q/9190190/1480391' con 'compare $ 1'. Ahora puedo ejecutar 'compress-compare example.com' para activar lo que quiera. ¿Dónde ha estado esta toda mi vida? – bowheart

Cuestiones relacionadas