Hay una charla muy buena de Rich Harris llamada, Las aplicaciones de una sola página arruinaron la web, y en general hay una muy buena charla en la esfera de Twitter o en la web sobre aplicaciones de una sola página versus aplicaciones de varias páginas, donde algunas personas dicen que las aplicaciones de varias páginas no cumplen con las expectativas que queremos y otras personas dicen que las aplicaciones de una sola página, debido a su carga lenta, no ofrecen el rendimiento que queremos. Ese es un debate en curso.
Pero para entender un poco de qué estamos hablando, necesitamos entender qué estamos hablando cuando hablamos de renderización. Así que, renderización 101, hablamos de quién construye el marcado. Puede ser el cliente, el servidor o el borde en el medio. ¿Cómo se vuelve interactivo? ¿Es el cliente el que lo hace interactivo? ¿O es el código JavaScript el que lo hace interactivo? ¿Son las funciones nativas del navegador? ¿O es React el que lo hace interactivo? ¿Cuándo se construye? ¿Se construye en tiempo de compilación o en tiempo de ejecución? Y, por supuesto, ¿desde dónde se sirve? ¿Se sirve desde algún tipo de red de borde, una caché o el propio servidor?
Entonces, si pensamos en un blog simple, por ejemplo, que es muy estático, entonces sabemos que se construye en tiempo de compilación, es interactivo. Estamos usando código JavaScript. El servidor lo está construyendo y se sirve desde la caché, ¿verdad? Porque no necesitas reconstruirlo en tiempo de ejecución. Pero si tienes una aplicación web compleja, eso es algo que el cliente está construyendo, probablemente usando React u otros frameworks, y requiere un servidor. Requiere un servidor en tiempo de ejecución para funcionar.
Entonces, si pensamos en esas dos partes, esos dos bordes, tienes la renderización del lado del servidor para páginas muy estáticas y simples, por un lado, y tienes la renderización del lado del cliente para aplicaciones web muy complejas, por otro lado, puedes colocarlos en un espectro, porque esas no son las únicas dos opciones que tenemos. Entonces, en la renderización estática, que es la renderización del lado del servidor en tiempo de compilación, obtienes la misma página para todos y se puede almacenar en caché fácilmente, pero no se puede personalizar. Y no puedes tener variantes, porque necesitas construir todo en tiempo de compilación y requiere una compilación para cada actualización, mientras que en la aplicación del lado del cliente, que es la más dinámica, se puede personalizar fácilmente porque se hace bajo demanda en la solicitud, pero no se puede almacenar en caché y tiene una carga inicial lenta y una obtención de datos lenta, porque tienes que ir al servidor para todo, pero tiene una capacidad de respuesta rápida en la aplicación. Pero debemos recordar, esto es un espectro, así que si quiero construir una página de listado y quiero que cada página en el listado sea diferente, porque tengo 10,000 propiedades que quiero listar, entonces puedo usar algo que se llama regeneración estática incremental, que no solo genera todo en tiempo de compilación, sino que genera algunos de ellos en tiempo de compilación y otros bajo demanda. Si quiero construir algo más personal, como mis reservas o mi cuenta, o cosas que necesitan mis datos, necesitan mis cookies para presentarse, entonces tendría que ir con la renderización en tiempo real del lado del servidor, porque no puedo almacenar en caché nada, y, por otro lado, si quiero construir una aplicación web, pero la mayoría de las partes de la aplicación web son estáticas y solo algunas partes son dinámicas, iría con componentes de nivel React. Hablaremos de todas estas estrategias. Entonces, cuando hablamos de estrategias SSL o el multiverso de la locura, debemos recordar que cuando hablamos de renderización estática, ya no hablamos solo del cliente y el servidor. Necesitamos poner algo en el medio, que es la red de borde o la caché, y luego podemos discutir sobre las relaciones entre el cliente, el borde y el servidor. En la renderización estática clásica, que es como vimos, las páginas de blog, el servidor genera la página en tiempo de compilación y envía la página a la caché, a la red de borde, y luego sale de la imagen. Ya no necesitamos el servidor. Simplemente generó la página y ya está. El cliente solicita la página a la caché o al borde y obtiene la página, obtiene la publicación del blog, y es importante entender. Es importante tener en cuenta que todos los clientes obtendrán la misma página porque todos la solicitan desde la caché. Como dijimos, las páginas se pueden almacenar en caché fácilmente y no requieren un servidor, y tienen un gran rendimiento, pero necesitan reconstruirse para cada actualización, y hay un problema con la obtención de datos. En la regeneración estática incremental, el servidor construye la página, la envía a la caché para que se almacene en caché, pero también construye muchas variaciones, muchas otras variaciones en la caché, y cuando el cliente solicita la página a la caché, obtienen la página, y otro cliente puede solicitar otra página y obtendrá otra página, pero si un tercer cliente solicita una página que no existe en la caché o en la red de borde, entonces va directamente al servidor. El servidor lo genera en tiempo real y lo envía a la caché, lo almacena en caché, y luego el cliente se comunica con la caché y obtiene esta página. Es como lo mejor de ambos mundos, pero aún necesitas un servidor. También puede ser activado por la caché. Puedes establecer un tiempo de invalidación. Por ejemplo, si tienes una página que necesita ser validada o actualizada cada par de minutos, cuando el cliente solicita la página a la caché, la caché puede decir que esta es la página que quieres, y el siguiente cliente, la caché puede decir, oye, la página está obsoleta, pidiendo al servidor que la regenere, mientras al mismo tiempo sirve la página obsoleta al cliente, y luego el servidor regenera una nueva página, la reemplaza en la caché, y luego el siguiente cliente obtendrá la página actualizada.
Comments