Llegamos a ustedes gracias a:



Reportajes y análisis

Generador de sitios estáticos: Pros y contras

[19/07/2011] Hace mucho tiempo, en una Internet muy, muy lejana, las personas construían sus páginas web a mano, colocando cada etiqueta HTML con el cuidado amoroso de un artesano. Pasaban el día reflexionando sobre preguntas como "¿Debo usar una <b> o ir hasta el final con una etiqueta <flash>?

La primera ola de automatización que pasó por las granjas de servidores barrió hacia un lado a estos humanos etiquetadores, y los reemplazó con plantillas que automáticamente envolvían las palabras e imágenes en el diseño del día. De repente, se denominó a las páginas web antiguas como "estáticas -un retrónimo que mostraba la fecha en que se comparaban con las páginas web "dinámicas nuevas, adaptables y con estilo.

¡Cómo cambian los tiempos! Al igual que las corbatas de moño entran y pasan de moda, de repente, "estática está de moda y los programadores de vanguardia están hablando de esto sin una pizca de burla o condescendencia. "Estática es veloz y rápido. "Dinámica es reflexiva, tediosa y lenta.

¿Tal vez alguien tuvo tiempo para pensar mientras esperaba y esperaba que el proceso de construcción terminara de trasladar un repositorio enorme lleno de una mezcla impía de React, Vue y Angular? ¿O tal vez alguien no pudo lograr que la base de datos creciera lo suficiente en tamaño como para manejar las interminables consultas de la capa dinámica de múltiples niveles, que constantemente vertía los mismos datos en los mismos bloques en las mismas páginas? Tal vez alguien se preguntó por qué estábamos pasando por todos estos problemas solo para que la página web pudiera tener un pequeño saludo personal en la esquina diciendo: "Cuenta de Bob.

La solución de regreso al futuro para todos estos problemas es un generador de sitios estáticos, una herramienta que es tan complicada como los sitios dinámicos, y vierte todo su contenido en plantillas de la misma manera. Pero guarda el resultado en un archivo con el sufijo .html, convirtiendo los datos en páginas web estáticas que se pueden alojar en el mismo tipo de servidor web estático que usaban sus abuelos para alojar sus GIFs de luna de miel. No necesita de un microservicio o de varios niveles para conectarse con el mundo. Simplemente copie algunos archivos y deje que un servidor web básico haga el trabajo.

Ya existe un buen número de generadores de sitios estáticos por ahí. Jekyll está diseñado para aplicaciones Ruby. Next o Gatsby exportarán React. Muchas de las plataformas dinámicas como Drupal tienen módulos que construirán copias estáticas del sitio completo o de subconjuntos importantes. Existen tantos que algunos desarrolladores han creado unas agradables listas curadas. (Vea esto y esto).

Como todas las ideas que cambian el mundo, esta estrategia es un legítimo destello de genialidad y una mezcla tibia de aburrimiento, dependiendo de cómo se mire. Aquí hay cuatro razones por las que los generadores de sitios estáticos se intercalan maravillosamente, con cuatro razones igualmente apremiantes para bostezar.

Pro: Las páginas web estáticas son rápidas

Repítalo de una vez: ¡RÁPIDO! Toda la página web está sentada allí en un SSD listo para funcionar. El servidor web solo necesita copiarlo en el código TCP/IP que se encuentra justo en la parte superior de la tarjeta de red. No es necesario obtener algunos datos de una base de datos, o esperar a que alguna biblioteca genere una plantilla. Incluso en los primeros días de la web, los servidores web eran tan rápidos que podían saturar una línea T1 con solo una CPU Intel 486 de gama baja y un poco de RAM. La combinación de varias décadas de millones de codificadores, que agregaron otra capa de dirección indirecta, ha hecho que solo sea una memoria, pero los generadores de sitios estáticos son un boleto mágico a los días en que los servidores web eran rápidos. Ni siquiera se moleste en modificarlo con un adjetivo como "extremadamente, solo use una palabra: rápido.

Desventaja: Los sitios web estáticos son muy simples

Si lo desea algo rápido, ¿por qué simplemente no elimina todo de su página web? Podrías hacer una página web de meteorología realmente rápido si librara de todos los GIFs de radar y tormentas animadas, y sustituyera todos esos datos con solo un número, la temperatura. Incluso podría empaquetarlo en un byte firmado con valores entre -127 y 128, al menos hasta que el calentamiento global se vuelva realmente malo.

Las páginas web estáticas son más rápidas, pero gran parte de esta velocidad se debe a la eliminación de la personalización de funciones y extras. Las personas acuden a las páginas web en busca de funciones e información, que se encuentran adaptadas a sus necesidades. Quieren más que un producto estandarizado de una línea de ensamblaje generalizada.

Ventajas: Las páginas web estáticas son flexibles

Los generadores de sitios estáticos pueden ejecutarse cuando desee actualizar las páginas. Puede necesitar hacerlo inmediatamente en una emergencia, pero también puede ser durante la noche o cuando la hora del servidor sea la más barata. Incluso puede usar una de esas instancias de nube en descuento que se pueden reservar con anticipación, como ofrece Google, porque si el trabajo se detiene varias veces, no importa. Incluso puede dejar que su laptop personal funcione por la noche y no tener que gastar nada en tiempo de servidor en la nube.

Muchas partes de la infraestructura de Internet están optimizadas para hacer algo de inmediato. Los ingenieros de sitios web se obsesionan con los milisegundos dedicados a responder un mensaje. Se preocupan por cómo distribuir los cálculos de respuesta en muchas máquinas que se ejecutan en paralelo, todo para que algunos niños maleducados y malagradecidos puedan ver un meme y escribir que se están riendo.

Hacer el procesamiento fuera de línea es mucho más simple. Si una llamada a la base de datos tarda unos segundos, no es gran cosa. Si alguien quiere usar un mejor algoritmo que ofrezca una mejor respuesta, puede codificar eso y no esforzarse al máximo -al tratar de mantener los datos consistentes- en muchos servidores que intentan trabajar en paralelo. Deje de preocuparse. Tiene todo el tiempo que necesita (dentro de lo razonable, por supuesto).

Esta es la ironía de los generadores de sitios estáticos. A pesar de que las páginas web individuales están programadas en piedra, pueden pasar horas haciendo un mejor trabajo con ellas. La vida estática de la web es para los filósofos, los pensadores profundos y los puristas que desean construir sus páginas web de la manera correcta, no apresurar los bits.

Desventaja: Las páginas web estáticas pueden decaer con el tiempo

La primera señal de que una página web está abandonada es el aviso de copyright en la parte inferior. Si en el aviso señala el año pasado o peor, dos o tres años atrás, su percepción de la compañía empeora. Este es un ejemplo extremo, pero los bits con fecha siempre son un riesgo para una página web estática. No sirven la comida más fresca.

Los administradores de sitios inteligentes, por supuesto, pueden combatir esto actualizando el sitio el 1ro de enero y quizás implementando un nuevo CSS cada pocos meses. Ellos pueden regenerar todo con un aspecto nuevo y actualizado tan rápido como los diseñadores pueden modificar los colores.

Y, sí, los defensores del sitio estático ciertamente tienen razón en que muchas de las páginas nunca cambian. Si una empresa declara tener una misión dinámica, con compromisos que cambian rápidamente con determinada moda o tendencia, bueno, no se percibiría como muy comprometida. Si los datos que se están produciendo no están cambiando, ¿por qué necesitamos un código web dinámico para reformular lo que debería estar esculpido en piedra?

Aun así, es difícil alejarse de la sensación de que las páginas web estáticas están mostrando algo viejo y desactualizado. Son como las vitrinas del delicatesen de la esquina o el sándwich envuelto en plástico en el quiosco de periódicos, junto a la última puerta del ala más lejana del aeropuerto.

Ventaja: Las páginas web estáticas pueden ser ahorrativas

No se puede evitar el hecho de que los generadores de sitios estáticos producen muchas páginas con mucha repetición. Cada parte de la plantilla de la página web se repite en cada una de las innumerables páginas estáticas. Los buenos programadores, a los que les gusta contar bytes y preocuparse por la eficiencia, comienzan a tener palpitaciones.

¿Pero por qué? El espacio en disco es barato. Mientras escribo esto, me pregunto si comprar una unidad SSD de dos terabytes, que cuesta 44 dólares. Mientras escribo esto, solo existen 47 millones de páginas en Wikipedia. Puede llenar esa unidad de dos terabytes con cientos de versiones estáticas de la Wikipedia y aún tener espacio para muchos videos de gatos.

Estas páginas estáticas precalculadas están listas para funcionar. El espacio en disco barato es un regalo. Utilícelo.

Desventaja: Las páginas web estáticas pueden ser ineficientes

Es difícil discutir la eficiencia previamente calculada de varias unidades de disco, llenas de datos que están listos para saltar a cualquier solicitud que se presente en el cable. Claramente, esa puede ser una gran solución para páginas web más pequeñas.

Para las páginas web grandes, es más difícil enfrentar una gran cantidad de datos. Si nadie solicita una página web precalculada, entonces se ha desperdiciado el tiempo empleado en construirla. Usted inició todo el generador de sitios estáticos para ahorrar tiempo, pero terminó perdiéndolo.

Muchas de las páginas web grandes basadas en datos pueden estar llenas de páginas a las que, como máximo, se accede una vez cada década. ¿A cuántas de esas páginas de Wikipedia se accede cada año? Para todas estas páginas de uso poco frecuente, volver a ejecutar el generador de sitio estático cada vez que el diseñador modifica el aspecto, o actualiza el aviso de copyright en la parte inferior, puede ser un gran desperdicio. ¿Por qué no solo tener una plantilla actual y rellenarla dinámicamente con los datos cuando alguien realmente quiere leerla?

Ventaja: Las páginas web estáticas pueden usar AJAX

El hecho de que la página web sea tan inmutable, como el peñón de Gibraltar no significa que sea completamente estática. Algunas llamadas AJAX pueden descargar bits adicionales de datos en segundo plano, mucho después de que se haya procesado la página. Estas llamadas pueden agregar los últimos precios de las acciones, el pronóstico del tiempo o algunos detalles personalizados sobre la cuenta de un usuario. Solo unos pocos bits de datos pueden agregar un poco de vida. Ni siquiera necesita salir a la red si almacena algunos de los datos localmente en cookies o en el almacenamiento local. Una llamada rápida puede recuperar el nombre del usuario, el cumpleaños, o los detalles básicos de la cuenta y darle a la página una sensación personalizada.

Desventaja: Las páginas web estáticas carecen de inteligencia

Muchos sitios dinámicos ya son bastante estáticos. Si busca bajo el capó de las páginas web creadas en marcos como Drupal, encontrará un mecanismo de almacenamiento inteligente y elaborado en caché, que almacena las copias actuales de las páginas cuando se generan. Si alguien más solicita la página unos segundos más tarde, obtiene una versión estática de la caché, no una nueva versión generada dinámicamente.

Los algoritmos de almacenamiento en caché pueden almacenar de forma muy inteligente solo bloques que no cambian en la página. La versión en caché también puede tomar prestado un truco del manual de sitios estáticos y usar AJAX y otras habilidades de JavaScript para actualizar las últimas páginas.

Páginas web estáticas y la web moderna

A lo largo de los años, el mundo del servicio web ha creado lentamente redes de distribución de contenido, o CDN (por sus siglas en inglés), que son cachés localizados de contenido estático distribuidos en todo el mundo. Si va a un sitio grande y dinámico, muchos de los bits invariables, como los GIFs con el logotipo, ya están almacenados en caché en muchas máquinas locales cerca de los centros principales. El contenido estático no obstruye la columna vertebral o incluso muchos de los pequeños zarcillos de Internet. Viene de una máquina de almacenamiento en caché que puede estar a menos de una milla de su navegador.

Los generadores de sitios estáticos pueden aprovechar estos CDN fácilmente, porque los CDN están diseñados para funcionar con archivos invariables. Una vez que produzca los archivos estáticos, los CDN harán el resto y los entregarán muy rápidamente. Los generadores de sitio estático son el complemento perfecto.

La solución es precomputar la mayor cantidad posible de sus páginas para que estos CDN puedan producir los datos inalterables tan fácilmente como sea posible. Luego mezcle la información dinámica con llamadas AJAX pequeñas y livianas que no bloqueen el procesamiento de la página. Es una combinación ágil y adaptada a la infraestructura web moderna.