Montar una web con lo imprescindible, ponerle el contenido y diseño, y olvidarnos de ella.. sería como comprarnos un coche y ya no preocuparnos nunca por pasarle una revisión. Sería como si nos diera igual si hay una bajada de potencia del motor, que las ruedas no estuvieran bien hinchadas. Quizá una bujía deja de dar los chispazos al 100%..
Y no sólo están los problemas de mal-funcionamiento, sino que quizá también hay algunas mejoras extras. No todo viene de casa, y puedes hacer que el coche vaya mejor. ¿Porqué no entonces dedicarle ese tiempo a nuestra web para revisar esas cosas? Es más, ¿porqué no poner a un mecánico que sepa lo que está haciendo? Está claro que nos podemos quedar tal cual, nuestro coche andará. Pero queremos que no le falte esa alegría, que responda sin pereza. Resumiendo, queremos que la maquinaria esté bien engrasada, sacando el 100% de su rendimiento. Entonces necesitaremos a un especialista que toque, pero no de oídas, sino que sepa lo que está tocando.
Cómo organizar las optimizaciones
Todas esas cosas que hay que tocar en una web llevan su tiempo. Siempre se hacen a posteriori de haber montado una web. Por eso que hoy vengo a traer unas pocas directrices. También unas herramientas para medir la parte técnica del SEO de una página web. El SEO es la optimización de una web para los motores búsqueda. Es decir, es la parte de trabajo de una web que se orienta a mejorar la puntuación que le dan los motores de búsqueda a una página web. Como ya he dicho en otros posts, en el SEO se engloba todo. Es importantísimo un buen diseño web, unos contenidos genuinos y de calidad, buenos links externos e internos, y buenas estrategias en redes sociales y blogs. Todo influye, y partiendo de aquí, tendremos los ingredientes necesarios. Así podremos ir trabajando técnicamente la infraestructura informática y ver buenos resultados a la larga.
El SEO es en gran parte secreto. Los algoritmos de puntuación que usan los buscadores son secretos y van cambiando diariamente. Igual que nosotros podemos cambiar nuestra web un día, las personas que trabajan en Google, Bing, Lycos, etc.. también pueden cambiar cosas en sus buscadores cada día. Así que si lees a alguien diciendo que tiene las fórmulas mágicas exactas, te aconsejo que dudes mucho. De todas formas, sí que hay cosas que se pueden medir. Que luego todas estas optimizaciones tengan más o menos puntuación será cosa de cada buscador, pero la calidad de las optimizaciones sí que es medible.
Primero el susto, midiendo..
Aquí dejo unas cuantas herramientas que me han parecido interesantes. Tanto si eres el informático, como si eres el jefe y quieres pedirle al informático que te haga estas optimizaciones. Aquí van:
Ahora cómo se arregla; frentes de ataque para optimizar
Aquí van las directrices de mejora. Todo esto no tiene porqué venir de casa en nuestra web. Incluso algunas de estas directrices es imposible ponerlas en marcha en los inicios de un proyecto porque dependen de las características del software y del proyecto en cuestión.
- Servidores DNS: primer punto de entrada a nuestra web, es necesario que los Domain Name Servers donde estén configurados nuestros dominios sean de calidad. Que podamos configurar los Time To Live (TTL) de los registros. Así cuando tengamos que hacer cambios en los registros de DNS tendremos un control total. Es importante que respondan ágilmente. Y ya si te permiten registros CNAME con el dominio raiz sin el www. pues mejor que mejor (que pocos lo permiten).
- SSL: cómo no, ya llevo años leyendo que la seguridad es un factor cada vez más importante para tener una buena puntuación. Y no sólo eso, hasta hay antivirus, y navegadores, que en el momento en que envías información privada en una web, si no tiene conexiones cifradas de saltará una alerta indicándote la inseguridad de enviar tu información. Así que como buenos informáticos, a cifrar todos lo servidores que podamos, que ahora tenemos Let’s Encrypt y es gratis. También se están uniendo otros certificados de seguridad SSL gratis como los de Amazon Certificate Manager.
- CDN: la red de distribución de contenidos (Content Delivery Network), aligerará los servidores. Por el mero hecho de tenerlo ya tienes puntos extra en tu servidor. Y si además mejoras la respuesta de los servidores, pues mejor que mejor. Hay CDNs que te permiten distribuir las visitas a ciertos servidores. Por ejemplo, podríamos tener el directorio del panel de administración en un servidor. O el blog, que esté alojado en otro servidor bajo un subdirectorio. Externamente todo parecerá que está en el mismo sitio, pero no es así internamente.
- Optimización de los ficheros servidos: cómo no, si comprimimos los ficheros adecuadamente mejor que mejor. Hay unificadores y minificadores de HTML, CSS y Javascript. Podemos comprimir también las imágenes. Si todo esto lo hacemos automático mejor que mejor. Esta tarea te llevará tiempo, pero aunque sea simple los resultados serán muy notorios en las puntuaciones. Evita librerías Javascript innecesarias, aunque sean servicios molones, a veces te pueden fastidiar otras cosas. Y obviamente, si vas a pintar imágenes de cierto tamaño, trata de enviarlas de dicho tamaño, aunque no siempre es posible por esto del diseño sensible al dispositivo jejeje
- Tipo de hardware del servidor: el hierro que tengamos es sumamente importante. Por favor, dejar de decir que un servidor dedicado es mejor es mejor que uno virtual xD Las nubes son siempre servidores virtuales que se arrancan automáticamente. A día de hoy son la mejor infraestructura porque tienes lo que necesitas, cuando lo necesitas. Un punto clave es usar discos sólidos (SSD). Para un servidor web necesitas un tiempo de respuesta rápido. Y como es bien sabido, el cuello de botella de muchos ordenadores es el disco duro. No es el caso si lo que quieres es distribuir contenidos de gran tamaño y no te importa la latencia. En este caso necesitarás mejor discos magnéticos o te saldrá muy caro. Cada caso es diferente. Así que un buen mecánico que sepa lo que haga, y que no toque de oídas, es necesario.
- Configuraciones del servidor web: otro punto crítico. He tenido entre manos proyectos que por una falta de configuración del servidor, no se han tenido buenos resultados. Muchas veces se olvida que un servidor no es instalarlo y ya está. O si necesitamos dar más servicio tenemos que aumentar el servidor y ya está. ¡No no no! Nada más lejos de la realidad, aumentar servidor es lo último que hay que hacer. Así que, ¡a empaparse de la documentación del servidor web! A ver qué módulos le ponemos, cuáles le quitamos, y con qué configuraciones lo dejamos..
- Cachés de front: están muy de moda, y pueden marcar la diferencia. Aquí entran sistemas como el citado anteriormente CDN, Varnish, el cacheado de ficheros PHP con APC, OPC, etc.. hay sistemas bien divertidos de configurar, plantean un buen reto el ponerlos en marcha. Los resultados también serán notorios cuando alcancemos las configuraciones perfectas rascando esos milisegundos que siempre vienen bien.
- Cachés de back: aquí tenemos sistemas como Redis o Memcached. Que proporcionarán una capa de datos que aligerarán las consultas a base de datos. Estos sistemas se basan en el uso de la RAM que es mucho más rápida que el disco duro para almacenar los datos. Así tendremos la respuesta antes que accediendo directamente a la base de datos. Además, necesitaremos de una base de datos menor.
- Configuración de la base de datos: bueno, bueno, aquí llegamos a otro punto crítico. No es lo mismo un Mysql 5.6, que un 5.7, o una Mariadb, Percona, Azure. Tampoco es lo mismo si comparamos con NoSQL, Postgresql, MS SQL, etc.. cada base de datos va mejor para cada cosa. Y dependiendo de nuestro proyecto, a priori, deberemos de elegir bien. Y a posteriori, deberemos también de empaparnos de la documentación, y configurar bien nuestra base de datos.
- Escalabilidad y tolerancia a fallos: como último punto tenemos la duplicidad de los servicios, y la automatización de acciones en función a eventos. Esto bien preparado puede hacer que la web crezca en visitas e infraestructura sin dejar de dar servicio. También podría recuperarse ante ante fallos. Se pueden mantener un mínimo de 2 servidores por si fallara uno, que mientras se recupera, que el otro diera el servicio. Estas estructuras dan buenos resultados pudiendo absorber bien los rastreos a veces recibimos y quizá son un tanto brutos con nuestros servidores. Más nos vale aguantar el tirón para tener la mejor indexación posible.
Valores medibles, cuantificable, qué son
Entre los principales valores que se pueden medir tenemos:
- TTFB: Time To First Byte, es el tiempo que hay entre que el navegador lanza una petición al servidor. Y el servidor responde con su primer byte de información. Esto nos da la impresión de pereza o diligencia que tiene nuestro servidor. Si tarda en frío en responder más de un segundo, mal asunto. Lo que recomiendan los expertos es estar entre los 100 ms y 500 ms.
- CDN: aquí lo que se puede medir, es qué tanto por ciento de los archivos que alojamos son servidos desde CDNs. Lo ideal es que todo fichero estático sea servido desde un CDN.
- Caché de navegador: igual que en el uso de CDNs, aquí podemos medir qué tanto por ciento de ficheros estáticos usan correctamente la caché de los navegadores. Es decir, podemos almacenar temporalmente ficheros de imágenes, por ejemplo, en los navegadores de los visitantes. Así igual que el CDN descarga al servidor de peticiones, la caché de navegador, descarga al CDN y a los servidores de peticiones de ficheros. La primera vez el navegador se descarga el fichero, y en las siguientes veces obvia la descarga de dichos ficheros porque ya los tenemos. Claro está, si hemos configurado bien esto a nivel de caché de front.
- Imágenes, CSS y HTML comprimibles: debemos de usar los compresores y minificadores para todos los ficheros estáticos. Y los ficheros que sean dinámicos, si es que podemos, como los que vienen generados mediante PHP, debemos de minificarlos en la medida de lo posible. Si están o no minificados y comprimidos se puede medir también.
- Primer dibujado de la web: este es el tiempo que tarda en empezar a dibujarse una web en el navegador del visitante. Cuanto antes empiece mejor, aunque todavía queden ficheros por descargar. Si ya se ve algo en el navegador, aunque queden cosas por descargar, no da sensación de espera excesiva. Esto también se puede medir.
- Tiempo de carga total: como su nombre indica, simplemente es el tiempo que tarda una página en ser descargada totalmente en el navegador del visitante.
- Cantidad de peticiones: estos son el número de peticiones que tiene que hacer el navegador. Son el número de peticiones necesarias para pedir todos los ficheros de una página. A menos peticiones mejor. Con el nuevo estándar HTTP se vienen cambios con esto, para que en una misma petición se puedan pedir todos los contenidos al servidor.
- Tamaño total descargado: y como no, el tamaño total descargado de cada página. Esto toma especial relevancia en los dispositivos móviles, en donde no abusar del ancho de banda del visitante va a influir directamente en su experiencia con nosotros.
Todo esto, a quién le toca?
Todos estos resultados son responsabilidad del informático. Habrá cosas más o menos fáciles. Quizá hay plugins disponibles si usamos algún CMS de moda. En otros casos hay configuraciones para las que hay que pasar largas horas leyendo documentación sobre cada tecnología. Hay que hacer pruebas hasta encontrar la mejor configuración para cada proyecto. Cada proyecto tendrá sus peculiaridades. Depende del software utilizado, o la forma en que se haya personalizado. También dependerá de la cantidad de datos y variabilidad de estos. O incluso del tipo de ficheros que se alojan en la web. No es lo mismo optimizar una red social, que una tienda online, que una plataforma de distribución de vídeo.