about-mide-la-velocidad-de-una-web-con-curl

En el siguiente artículo vamos a echar un vistazo a cómo podemos medir el tiempo de respuesta de un sitio web desde la terminal utilizando cURL. Esto resulta interesante conocerlo, dado que puede tener un gran impacto en la experiencia del usuario.

Tanto si eres un desarrollador web como si administras un servidor, sabrás que la velocidad es algo que conviene tener siempre a punto. Es importante que todo funcione correctamente para que los usuarios no se sientan frustrados mientras acceden a tu sitio.

A continuación vamos a ver algunos comandos para poder medir el tiempo de respuesta de un sitio web. Con ellos vamos a poder verificar el tiempo en segundos de diferentes campos tanto de páginas http como https. Todo lo haremos desde la línea de comandos de Ubuntu utilizando cURL,

Utilizar cURL para medir la velocidad de carga

De sitios web con HTTP

control-de-velocidad-web-http

cURL cuenta con muchas opciones disponibles, entre ellas podemos encontrar -w, que va a resultar útil para imprimir información en la salida estándar después de una operación completada. Además nos ofrece algunas variables que podemos usar para probar los diferentes tiempos de respuesta de un sitio web.

Para conseguir esta medición, vamos a utilizar algunas de las variables que se pueden encontrar en la documentación oficial de cURL. Estas se pueden pasar en un formato dado como una cadena literal o dentro de un archivo.

Las variables que utilizaremos van a ser las siguientes:

  • time_namelookup → Tiempo en segundos. Se toma desde el inicio hasta que se completa la resolución del nombre.
  • time_connect → Tiempo en segundos. Desde el inicio hasta que se completó la conexión TCP al host remoto o proxy.
  • time_pretransfer → El tiempo en segundos que se tardó desde el principio hasta que la transferencia de archivos estaba a punto de comenzar. Esto incluye todos los comandos y negociaciones previas a la transferencia que son específicos de los protocolos involucrados.
  • time_starttransfer → El tiempo en segundos que se tardó desde el principio hasta que el primer byte estaba a punto de ser transferido. Esto incluye time_pretransfer y también el tiempo que el servidor necesitó para calcular el resultado.
  • time_totalTiempo total en segundos que duró la operación completa. Se resuelve en milisegundos.

Para ejecutar el comando que vamos a montar con las anteriores variables, solo tendremos que abrir una terminal (Ctrl+Alt+T) y escribir:

curl -s -w '\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null http://www.google.com

Como esto se puede volver un poco engorroso escribirlo en una terminal cada vez que queramos utilizarlo, podemos optar por escribirlo en un archivo.

Dentro del archivo, al que voy a darle el nombre de control-velocidad-web.txt, hay que pegar el siguiente código:

\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n

Una vez guardado y de nuevo en la terminal, podemos utilizar este archivo escribiendo la siguiente sintaxis:

curl -s -w "@control-velocidad-web.txt" -o /dev/null http://www.google.com

El comando anterior trabajará en modo silencioso gracias a -s. Con -w se imprime la información en stdout. Para redirigir la salida a /dev/null vamos a utilizar -o.

De sitios web con HTTPS

control-de-velocidad-web-https

Si nos interesa utilizar esta prueba para los sitios HTTPS, se puede ejecutar en la terminal (Ctrl+Alt+T) el comando:

curl -s -w '\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nAppConnect Time:\t\t%{time_appconnect}\nRedirect Time:\t\t%{time_redirect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://ubuntu.com

En este formato se utilizan más variables de tiempo además de las anterior. Y estas son:

  • time_appconnect → El tiempo en segundos que se tardó desde el principio hasta que se completó la conexión SSL / SSH / etc al host remoto.
  • time_redirect → Tiempo en segundos, que tardaron todos los pasos de redireccionamiento antes de que se iniciara la transacción final. Calcula el tiempo total de ejecución para redirecciones múltiples.

Como en el caso anterior, también se puede escribir en un archivo. Como en el caso anterior lo voy a llamar control-velocidad-web.txt, y dentro habrá que pegar:

\nTiempo de respuesta para: %{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nAppConnect Time:\t\t%{time_appconnect}\nRedirect Time:\t\t%{time_redirect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n

Guardado el archivo y de nuevo en la terminal, podemos utilizarlo con la sintaxis:

curl -s -w "@control-velocidad-web.txt" -o /dev/null https://ubuntu.com

Para más información, se puede consultar la documentación de cUrl o la página del manual:

man curl

Como los valores de tiempo de respuesta irán cambiando debido a diferentes factores, lo recomendable es realizar diferentes pruebas y establecer una velocidad promedio. Algo que también vamos a ver es que acceder a un sitio web a través de HTTP, por regla general es mucho más rápido que hacerlo a través de HTTPS.

 

Fuente: ubunlog

¿Quién está en línea?

Hay 12395 invitados y ningún miembro en línea