Mis primeros proyectos en los que trabaje siempre fueron pensados para un grupo pequeño de 2500 personas para automatizar una serie de procesos en una empresas, ahora me enfrento a algo mucho mayor, tener una aplicación para el público en general que su tiempo de respuesta este a menos de 2 segundos para la descarga de toda una página WEB, y nunca me imagine la cantidad de cosas que hay que hacer para lograr esto, más el tiempo que lleva de trabajo, y creo que aún no termino.

El SEO tiene muchos consejos que dice donde pueden estar los puntos críticos para resolverlos, pero el ¿Cómo? depende de un gran número de variables, en mi caso creo que me conseguí con muchas cosas en contra, empezando por Drupal, luego un diseño del tema no pensado en el rendimiento, la cantidad de información a mostrar, servicios de terceros que su rendimiento es lamentable y pare de contar.

Mientras uno resuelve un problema a la ves, al pasar al siguiente te das cuenta que al investigar existen siempre muchas soluciones, algunas tienen un tiempo en el mercado y otras son totalmente innovadoras, el caso es sentarte a probar una a una, ver cuales son mejores e implantar la más segura.

En mi caso termine implementando todas estas soluciones que ayudaron a bajar de 20 segundos de carga hasta un promedio de 4 segundos con un ancho de banda de 8Mbps, y todavía me faltan cosas por hacer. En mi filosofía esta que siempre debemos resolver los problemas desde su origen, y mucho de los siguientes puntos lo son:

  • Usar fuentes estándares: No usar otras fuentes que no sean las estándares de los Navegadores. La lista la puedes ver aquí.
  • Comprimir imágenes: Solo en caso particulares solo podemos usar los GIF o PNG, pero para el resto se recomienda usar los JPG y todos se le debe bajar la calidad a un 75% como mucho.
  • Comprimir los Scripts: Los archivos de tipo CSS y JavaScript deben estar comprimidos  y limpios de comentarios para reducir el tiempo de descarga, también se le puede hacer al HTML que no le viene nada mal.
  • Reducir el numero de peticiones: uniendo los archivos de los CSS, JavaScripts y las imagenes del tema en una sola y esta técnica se llama Sprites.
  • Ordenar las peticiones: Los archivos mencionados anteriormente para que puedan ser descargados por el navegador de forma simultánea deberán estar ordenados según su tipo.
  • No usar iFrames: Esto depende mucho del rendimiento que ofrecen los terceros, no existen garantías, no es un ambiente controlado a fallos, y de paso es todo un proceso para solicitar cambios a la medida.
  • Uso de cache: No se imaginan lo versátil que puede ser, desde rendimiento hasta seguridad. Se debe implementar tanto para el servidor WEB como para la aplicación. Para esto existe a nivel de servidor Redis, Varnish y Nginx, Drupal tiene sus propios módulos.
  • Tuning: Se debe configurar adecuadamente los diversos servicios que necesita la aplicación, ej.: Apache y MySQL.

NOTA: Para mayor información les dejo leer Las mejores practicas de rendimiento de Google.

Por ahora no se implementa las soluciones clásicas como tener un servidor dedicado únicamente al balanceo de carga, aplicaciones, base de datos, contenidos estáticos. Estás soluciones dependen más cuando el nivel de respuesta sobre las peticiones no es satisfactorio por parte del servidor y “la aplicación está en perfecto estado de rendimiento”.