Hola de nuevo,
En esta entrada voy a hablar sobre los nuevos cambios que he implementado en el blog en los últimos días. Si echáis un vistazo apenas notareis diferencias, únicamente he cambiado algunos detalles en el estilo. Los cambios grandes se han hecho en el interior interior, más concretamente, en la generación del blog.

Tras aplicar los cambios y hacer algunas pruebas de rendimiento, he medido un tiempo de carga de la página de entre tres y cuatro veces más bajo. Es decir, una carga más rápida obteniendo el mismo resultado. Justo lo que buscaba. Y lo mejor de esto es que la página ya era muy rápida antes de tocar nada.

Cuando realicé el lavado de cara del blog dejé algunos detalles pendientes con los que no estaba muy conforme. Alguno de ellos ya los solucioné: la gestión de los comentarios, por ejemplo. Aunque este era bastante urgente, así que creo que no cuenta. Pero otros, se quedaron en el tintero porque todo funcionaba como quería, aunque no me convencía del todo cómo estaba hecho.

Algunas partes de las páginas del blog se terminaban de componer en el dispositivo cliente usando JavaScript. Cuando un usuario entraba a una página, se terminaban de crear algunos componentes, como por ejemplo: las etiquetas de las entradas, los títulos de las tablas de contenido, los botones de navegación al final de cada entrada, entre otras modificaciones.

El tema de modificar dinámicamente el HTML de la página no me terminaba de convencer. Y es algo normal… Seguridad y velocidad. Además de que algunos usuarios pueden tener la ejecución de código JavaScript desactivada, por lo que básicamente verían la página sin terminar. Funcional sí, pero no completa.

Pensando un poco en este tema, era una estupidez ejecutar este código JavaScript porque todos los usuarios iban a obtener siempre el mismo resultado visual. Las funciones no eran parametrizables ni configurables. Entonces, ¿por qué no ejecutar este código a la hora del renderizado del blog y generar las páginas estáticas ya terminadas? Eso es justamente lo que he hecho.

El ahorro de cálculos por parte del cliente es lo que genera el aumento de velocidad en la carga de las páginas. Ahora todo el contenido está incluido en la página estática y simplemente es descargar y mostrar. Hay cosas, por supuesto, que no se pueden hacer siguiendo esta estratégica, pero son las que menos y de menor importancia. Estoy hablando de la barra de progreso de lectura en la parte superior de la página, o en el botón para volver al inicio de las entradas, por ejemplo. Son añadidos estéticos que de no ejecutarse por cualquier motivo la página no pierde contenido.

El tema de los comentarios va un poco a parte. JavaScript es un requisitos indispensable para mostrarlos, de modo que tampoco se puede hacer mucho. De estar desactivado, aparecerá un aviso para indicar que no puede funcionar correctamente y listo. También he añadido este aviso en la página de búsqueda de entradas para que quede claro que no funciona si la ejecución de scripts está bloqueada.

Con los nuevos cambios, es aun más fácil la creación de entradas. Ahora toda la información está únicamente en las cabeceras de cada fichero usando el formato yml, y no está desperdigada y duplicada como antes. Estaba hecho un poco de aquella manera, lo sé. A la hora de la renderización se leen estas propiedades y se utilizan donde es pertinente. Lo que hace que todo sea más claro y fácil de mantener.

Estos cambios han hecho que la generación del sitio requiera un poco más de tiempo (no mucho más, solo unos segundos), ya que hay más procesamiento y todo el código dinámico se genera en este punto. Pero las páginas generadas ahora están completas, lo que hace que aumente la compatibilidad con más navegadores, dispositivos y configuraciones. En definitiva, estoy muy contento con el resultado final y el blog cada vez está más cerca de estar terminado.

Nos vemos en la próxima entrada,
Lázarus Surazal

Entradas relacionadas

Perfil
prLázarus logo info
Carlos J. Peláez Rivas (Lázarus Surazal)
Graduado y Máster en Ingeniería Informática por la Universidad de Málaga. Actualmente trabajando como desarrollador de aplicaciones en Java usando Vaadin.
Apasionado de los videojuegos, la música y alguna que otra tecnología, siempre buscando cosas nuevas que aprender y hacer.
Más sobre mi...
Contacto
Notificaciones