Por qué invertir en acelerar un sitio web
La primera pregunta que uno se haría ante esta situación es: ¿para qué molestarse? 🙂
Es decir, cualquiera preferiría un sitio rápido antes que uno lento, ¿cierto?
Pero… ¿para qué sirve realmente tener un sitio más rápido?
Bueno pues hay dos respuestas inmediatas:
- Mejor experiencia de usuario
- Mejor posicionamiento orgánico
Ambas redundan en beneficios muy palpables para los dueños de los sitios: clientes más satisfechos y mayor afluencia de potenciales clientes.
Qué factores influyen
Muy bien, ahora que estamos de acuerdo en que tener un sitio rápido es beneficioso tenemos que comprender qué factores influyen en la velocidad de carga.
La realidad es que son muchos y, lamentablemente, unos cuantos están fuera de nuestro control, pero igualmente analicémoslos un momento.
Toda la interacción con un servidor web se basa en:
- Una traducción de un nombre de dominio en una dirección IP
- El establecimiento de una conexión entre el cliente y el servidor
- El envío de información desde el cliente hacia el servidor
- La resolución del pedido por parte del servidor
- El envío de información desde el servidor al cliente
- El rendering del lado del cliente
Como puede verse, un factor decisivo será la velocidad de la red subyacente en esta comunicación (Lo que se conoce como ancho de banda) pero definitivamente no es el único.
De modo que existen medidas que pueden tomarse para mejorar el tiempo del lado del cliente (frontend) y otras tantas del lado del servidor (backend).
Cómo acelerar el frontend de una aplicación Web
Acelerar el frontend implica minimizar:
- La cantidad de pedidos al servidor
- La cantidad de información intercambiada en cada pedido
- El tiempo que insume el rendering
Un típico cuello de botella lo encontramos en el tamaño de las imágenes u otros archivos estáticos (JavaScript, CSS, etc…).
Reduciendo estos es posible ganar mucho.
Una herramienta muy útil para medir estos cuellos de botella es GTMetrix
Cómo acelerar el backend de una aplicación Web
Y luego está la otra cara de la moneda: el servidor.
¿Qué podemos hacer para que nuestro servidor responda más rápido?
Nuevamente, tenemos que saber a dónde apuntar nuestros cañones.
Usualmente una aplicación web consiste en:
- Un webserver
- Una base de datos
- Algún script
En nuestro caso asumiremos que se trata de PHP, aunque los principios aplican para cualquier lenguaje.
Es muy probable que la parte más compleja de optimizar sea el código de la aplicación.
Principalmente porque lograr el mismo resultado usando mejor código requiere mucho análisis y, sobre todo, mucho testing para asegurarnos de no romper nada en el camino.
Hay unas cuantas mejoras que pueden hacerse desde la infraestructura que son muy simples y aportan mucho. Por ejemplo:
- Distribuir la carga a través de un CDN
- Enviar el contenido comprimido
- Usar algún minificador de CSS/JS
- Usar un caché agresivo en el webserver
- Usar PHP vía PHP-FPM
Y luego hay otras herramientas que complementan al servidor web como ser los cachés de memoria (APC, Memcached, Redis, etc…)
También vale la pena investigar qué consultas pueden estar trabando la base de datos, por ejemplo usando el MySQL slow query log e intentar mejorarlas.
Y por último, si sospechamos que el código está haciendo de las suyas podemos usar un profiler como XDebug para orientarnos sobre dónde poner la lupa.
Conclusión
En definitiva, acelerar un sitio web lento es perfectamente posible pero también bastante laborioso.
Siempre debe primar un criterio de costo/beneficio para saber cuando se ha alcanzado una velocidad aceptable y ya no vale la pena el esfuerzo de seguir mejorándolo.
- Cómo enviarencabezados SOAP desde PHP - 09/12/2024
- Por qué PHP 8 no satisface el requisito ^7.3 de composer - 09/12/2024
- Cómo usar PHPUnit - 03/12/2024