Nuevos modos de renderizado en Gatsby v4

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Gatsby v4 ahora tiene SSR y un nuevo modo de renderizado llamado DSG. Entre SSG, SSR, DSG, ISR y DPR, el Jamstack ha visto recientemente una avalancha de nuevos modos de renderizado que funcionan para cada caso de uso que parecía inviable en el pasado. Pero saber qué elegir para tu sitio o una parte de tu sitio y qué hace cada uno de estos realmente bajo el capó es confuso y fácil de hacer incorrectamente.

Esta pista aclarará la confusión y se adentrará en cada uno de ellos, discutiendo matices e incluso echando un vistazo bajo el capó para ver cómo funcionan y qué promesas de escalabilidad y consistencia ofrecen y cuáles cumplen.

This talk has been presented at React Advanced 2021, check out the latest edition of this React Conference.

FAQ

Gatsby Cloud es una plataforma optimizada para construir e implementar sitios web utilizando Gatsby. Ofrece beneficios como una implementación rápida y económica, y es considerado un lugar ideal para la creación de sitios de Gatsby.

Gatsby v4 introduce varios modos de renderizado, incluyendo SSR (Server-Side Rendering) y DSG (Deferred Static Generation). Estas opciones permiten una mayor flexibilidad en cómo se generan y sirven las páginas, mejorando la escalabilidad y la velocidad de los sitios.

La generación diferida de estática (DSG) es una característica de Gatsby v4 que permite posponer la generación de páginas menos críticas hasta que sean necesarias, reduciendo los tiempos de compilación iniciales y mejorando la gestión de recursos.

En un sitio de comercio electrónico, DSG permite construir rápidamente las páginas iniciales y posponer la generación de otras páginas hasta que se requieran, lo que resulta en tiempos de compilación más rápidos y una mejor escalabilidad para manejar un gran número de productos.

La pre-renderización en Jamstack mejora la seguridad y la resistencia de un sitio al construir las páginas de antemano. Esto minimiza los errores en tiempo de ejecución y optimiza la entrega del contenido, haciéndolo más rápido y confiable.

En Gatsby, SSR genera páginas en tiempo real y puede utilizar caché para optimizar el rendimiento. A diferencia de la generación estática, SSR puede manejar datos dinámicos y personalizados, aunque con un costo de infraestructura y tiempo de respuesta ligeramente mayor.

LMDB (Lightning Memory-Mapped Database) es una tecnología utilizada bajo el capó en Gatsby para mejorar el manejo de datos y estado entre compilaciones. Permite una serialización y deserialización eficiente de datos, crucial para el rendimiento y la escalabilidad de sitios grandes.

Sid Chatterjee
Sid Chatterjee
24 min
22 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Gatsby v4 introduce la generación estática diferida (DSG), combinando los beneficios de la generación de sitios estáticos (SSG) y el renderizado en el servidor (SSR). Este enfoque permite construcciones más rápidas y una caché más determinista. Gatsby v4 también incluye características como la ejecución de consultas en paralelo y LMDB para un rendimiento mejorado. El enfoque se centra en las integraciones y en mejorar la experiencia del desarrollador (DX) en el futuro.
Available in English: Gatsby v4's New Rendering Modes

1. Introducción a Gatsby v4 y Jamstack

Short description:

Mi nombre es Sid, trabajo en Gatsby Inc. He estado allí por un tiempo. Gatsby Cloud es el mejor lugar para construir y implementar tus sitios de Gatsby. Hablemos de lo que eso significa. Jamstack ha estado presente por un tiempo. Los principios fundamentales de la pre-renderización y el desacoplamiento se supone que te brindan más confianza en tu sitio. La generación de sitios estáticos ha funcionado bien para nosotros durante un tiempo. En Gatsby en Gatsby Cloud, hemos visto sitios bastante grandes, hemos visto sitios de comercio electrónico y blogs y demás. Hemos visto sitios que han llegado a casi 100,000 páginas. Y es increíble que podamos hacer eso con lo que comenzó como un simple generador de sitios estáticos. Es bueno para el SEO, es rápido y también es barato de implementar.

Un tiempo realmente largo. De hecho, creo que algunos de ustedes los conocí por primera vez, así que ha sido genial. Ha sido surrealista, realmente. Mi nombre es Sid, trabajo en Gatsby Inc. He estado allí por un tiempo.

A lo largo de los años, he ayudado a construir y mantener el proyecto de código abierto de Gatsby. Más recientemente, he estado trabajando en Gatsby Cloud. Gatsby Cloud es el mejor lugar para construir e implementar tus sitios de Gatsby. Y voy a hablar sobre varias cosas diferentes que hemos hecho con Gatsby v4. En caso de que te lo hayas perdido, hemos estado ocupados. Gatsby v4 salió ayer y tiene varios modos de renderizado. Hablemos de lo que eso significa.

Entonces, antes de todo eso, una breve lección de historia. Jamstack ha estado presente por un tiempo. Han pasado un par de años. Pero cuando comenzó, eran solo sitios estáticos. Tenías generadores de sitios estáticos como Hugo, ahora tienes Eleventy. Eleventy, hemos tenido Gatsby, Next, en algún momento también agregó SSG. La idea con Jamstack era preconstruir tus activos, HTML, CSS, JavaScript, etc. Y desplegarlo en el edge. Y los principios fundamentales, como dije, copié y pegué esto, los principios fundamentales de la pre-renderización y el desacoplamiento se supone que te brindan más confianza en tu sitio.

Lo interesante de esto es la pre-renderización. ¿Por qué te brinda más confianza y por qué es más resistente? Porque lo que necesitas hacer para construir una página ya está hecho, no tienes que hacerlo en el momento de la solicitud. Por lo tanto, hay muy poco que pueda salir mal, sin embargo, no siempre es tan simple. Antes de llegar a por qué no es simple. La generación de sitios estáticos ha funcionado bien para nosotros durante un tiempo. En Gatsby en Gatsby Cloud, hemos visto sitios bastante grandes, hemos visto sitios de comercio electrónico y blogs y demás. Hemos visto sitios que han llegado a casi 100,000 páginas. Y es increíble que podamos hacer eso con lo que comenzó como un simple generador de sitios estáticos. Y en caso de que te hayas perdido los beneficios de SSG en los últimos años, es bueno para el SEO, es rápido y también es barato de implementar.

2. Introducción a Netlify y SSG

Short description:

Tenemos a Matt aquí de Netlify. Netlify se ha convertido en la forma predeterminada de implementar cosas porque es barato y gratuito. Cuando visitas un sitio en Netlify o Gatsby Cloud, estás accediendo efectivamente a un depósito de almacenamiento y obteniendo un archivo estático. No hay mucho código en ejecución en tiempo de ejecución, lo que lo hace resistente.

Tenemos a Matt aquí de Netlify. Probablemente todos ustedes hayan usado Netlify en algún momento, ¿verdad? Y casi se ha convertido en la forma predeterminada de implementar cosas, ¿verdad? Porque es barato, es gratuito. Él está justo allí, por cierto, su foto estaba justo allí por un segundo. Y en caso de que, ya sabes, quieras saber cómo se ve realmente SSG bajo el capó, cuando visitas un sitio en Netlify, Gatsby cloud, cualquiera de estos hosts, estás accediendo efectivamente a un depósito de almacenamiento, ya sea S3, GCP o cualquier otro. Estás obteniendo un archivo estático. No hay mucho código que se esté ejecutando en runtime, y por eso es tan resistente.

3. Desafíos con SSG y la Introducción de SSR

Short description:

Esto no siempre es escalable para sitios realmente grandes. Con el tiempo, a medida que agregas más productos, el tiempo de construcción puede volverse extremadamente lento, lo que lo hace impráctico. Una forma de abordar esto es utilizando el renderizado del lado del servidor (SSR), que implica tener un servidor que sirva cada solicitud y una caché delante de él. Sin embargo, el uso de SSR significa perder los beneficios de la generación de sitios estáticos (SSG) y presenta desafíos con la imprevisibilidad de la caché.

Hablemos un poco más sobre dónde esto se desmorona, ¿de acuerdo? Esto no siempre es escalable. He escuchado esto a lo largo de los años de personas en GitHub, en Twitter, etc. Que es genial para tu blog, o para un sitio pequeño, pero no es escalable para sitios realmente grandes. ¿Qué pasa si tienes muchas páginas y demás? No estoy de acuerdo. Hablaremos sobre por qué.

Supongamos que quieres construir un sitio de e-commerce, ¿de acuerdo? Comienzas con lo que parece una plantilla de Tailwind UI, que compré, por cierto. Y tienes una página de inicio con tus productos y demás, y tienes alrededor de 20-30 productos y se construye rápidamente y todo es genial. Y tienes otra página donde tienes una camiseta que vendes y todo es maravilloso. Todo tu sitio se construye en menos de un minuto. La vida es buena. Pero luego, tienes muchos más productos, ¿de acuerdo? Con el tiempo, ganas dinero, vendes más camisetas o tazas o lo que estés vendiendo. Y ahora, de repente, esto sucede. ¿Ves esa marca de tiempo allí? Eso es una hora y 54 minutos. No me lo inventé. Esa es una captura de pantalla. Julian trabaja conmigo, esa es una captura de pantalla. Un sitio tardó una hora y 54 minutos en construirse. Es algo inutilizable, ¿no? Quiero decir, no puedes esperar dos horas después de cada cambio que hagas. Y esto es real. Hemos visto esto. Hemos tenido clientes que han visto esto. Y esta es una de las razones por las que SSG se desmorona, puede volverse lento, porque quieres hacer todo ese trabajo en tiempo de construcción, y tal vez eso sea demasiado trabajo. Entonces, ¿cómo solucionas esto? Bueno, en nuestro sitio de e-commerce que estamos tratando de construir, lo que normalmente haces es, ya sabes, te frustras, y dices, hey, esto no es escalable, y llamas a un viejo amigo. Next. O realmente cualquier cosa que haga SSR.

Y la forma en que funciona SSR es que, bueno, hemos hecho esto a lo largo de los años, tienes algún servidor, ya sea Node.js, PHP, lo que sea, que sirve cada solicitud, ¿de acuerdo?, y tienes una caché delante de él. Funciona bien, nos ha servido durante años, pero ahora has perdido todos los beneficios y todo lo que SSG te prometió, todo lo que querías que fuera estático en primer lugar. La caché es mucho más difícil de predecir, no es determinista. La caché tiende a ser específica del usuario, a veces incluso específica del borde, ¿verdad? Es difícil saber qué está en caché en qué momento para tu sitio, para todos tus usuarios.

4. Desafíos con SSG y APIs en tiempo de ejecución

Short description:

También consumes todos estos servicios y APIs en tiempo de ejecución. ¿Recuerdas cuando Facebook se cayó hace un par de semanas? Tu página no se renderiza. Así que es frágil. Y supongamos que eso no sucede y escalas bien, eso puede volverse realmente costoso. Y esto es lo que ves cuando todo se desmorona.

También consumes todos estos servicios y APIs en tiempo de ejecución. ¿Recuerdas cuando Facebook se cayó hace un par de semanas? Quiero decir, si ellos pueden caer, nuestras APIs también pueden caer, ¿verdad? Y supongamos que eso sucede en tiempo de ejecución cuando intentas visitar una página. ¿Qué sucede? Tu página no se renderiza. Así que es frágil. Y supongamos que eso no sucede y escalas bien, eso puede volverse realmente costoso, ¿verdad? Y esto es lo que ves cuando todo se desmorona. Puedes ver que obtuve eso de internet, porque Gatsby, esto nunca sucede. Así que descargué la captura de pantalla.

5. Desafíos con SSG y Generación Diferida de Estática

Short description:

Por eso, a menudo optas por SSR cuando tienes muchas páginas. En el momento en que mezclas SSG con SSR, tienes un conjunto completamente nuevo de problemas. Con Gatsby V4, tenemos lo que llamamos generación diferida de estática. Obtienes todos los beneficios de la generación estática de páginas, pero con la escala de SSR. La idea es que, en lugar de construir todas las páginas, solo construyes las críticas y pospones el resto. Tus tiempos de construcción se convierten en una función de tu tráfico. Gatsby crea una instantánea de tus datos y el paquete de JavaScript en el momento de la construcción para generar las páginas más tarde. Este enfoque también proporciona una caché más determinista.

Por eso, a menudo optas por SSR cuando tienes muchas páginas. En el momento en que mezclas SSG con SSR, tienes un conjunto completamente nuevo de problemas. Con SSG, es genial para un par de páginas. Así que digamos que construyes tu página de inicio estáticamente porque no cambia con tanta frecuencia. Y en nuestro ejemplo del que hemos estado hablando durante un tiempo, tus páginas de producto se generan mediante SSR. Es un buen compromiso. Escala bien, ¿verdad? Tus construcciones ya no tardan dos horas, pero pierdes la atomicidad de la construcción. Y lo que quiero decir con atomicidad de la construcción es que ambas partes de tu sitio se construyen de forma independiente en diferentes momentos. Es difícil asegurarse de que sean consistentes entre sí. Puedes encontrarte con una página de inicio que dice que el producto A está disponible y hacer clic para luego ver que no lo está. Y eso es una experiencia terrible. No quieres eso.

Entonces, ¿cómo solucionas esto? ¿Cómo llegas a un compromiso y tienes construcciones rápidas pero también consistencia en las páginas, pero aún intentas construir algunas cosas más tarde? Es complicado. ¿Cómo pospones un poco el trabajo? En el espectro del que hemos estado hablando con SSR en un extremo y SSG en el otro, tiene que haber algo intermedio, ¿verdad? Quiero decir, SSR es maravilloso para algunos casos de uso. SSG debería ser tu opción predeterminada. Pero, ¿qué pasa con estos casos de uso intermedios? Y eso es realmente de lo que trata esta charla. Con Gatsby V4, tenemos lo que llamamos generación diferida de estática. Puedes pensar en ello como SSG, pero más tarde. Obtienes todos los beneficios de la generación estática de páginas, pero con la escala de SSR. Y esto puede sonar demasiado bueno para ser verdad, pero en realidad es bastante simple. La idea es que hablamos de todo ese trabajo que necesitas hacer para construir todas estas páginas, que llevaba como dos horas, pero en lugar de construir todas ellas, solo construyes las críticas, pospones las que no son tan críticas. Y ahora, en lugar de que tus tiempos de construcción sean una función del número de páginas que tiene tu sitio, es una función de tu tráfico. Lo cual es bastante interesante si lo piensas. Además, no necesitas acceder a estas APIs o consumir estos servicios en tiempo de ejecución. Lo que hace Gatsby es que creará una instantánea de tus datos y el paquete de JavaScript en el momento de la construcción y lo usará para generar estas páginas más tarde. Además, tu caché es mucho más determinista. Recuerda que hablamos de la caché, la caché es difícil, ¿verdad? Es uno de los problemas más difíciles con los que tenemos que lidiar y resolver. Una caché no determinista puede causar mucha confusión.

6. Generación Diferida de Estática y Modos de Renderizado

Short description:

Con la generación diferida de estática, tu caché es global y atómica, eliminando inconsistencias. El proceso implica ejecutar código para generar una página a partir de una instantánea, almacenándola en caché como activos estáticos. Las solicitudes posteriores para la página se sirven como cualquier otra página SSG. Gatsby 4 ahora admite estos modos de renderizado.

Con la generación diferida de estática, tu caché no es específica del borde ni del usuario. Tu caché es global, como suele ser con SSG, pero aún puedes obtener estos beneficios de poder posponer parte del trabajo. Y como resultado de eso, también es atómico. No tendrás esas inconsistencias de las que hablamos.

Hablemos un poco más sobre cómo funciona, sin embargo. Aquí hay un bonito diagrama. Y si lo miras, hay dos secciones. Está la primera solicitud en la parte superior y la segunda solicitud debajo de ella. Veamos la primera. La primera se ve igual que una solicitud de SSR. Accedes a una URL, hay un caché perdido, así que en su lugar vuelves a algún lugar. ¿Verdad? En algún lugar. En algún lugar. Hay algún código en ejecución. Digamos que la página se llama about. Hay algún archivo llamado about.js que se ejecuta, mira esa instantánea, genera esa página para ti, hace todo lo que necesitas. Al igual que un servidor SSR. Y envía esa respuesta de vuelta. Mira lo que más hace. También lo almacena en caché. Y esto puede parecer bastante simple en la superficie, pero es muy diferente de cómo es SSR y a lo que estamos acostumbrados. Esa caché no es una caché HTTP. Esa caché son los activos estáticos guardados en algún lugar. Así que cada vez que haya una solicitud después de eso, simplemente la obtienes como lo harías para cualquier otra página SSG. Y eso no es la primera solicitud ni la segunda solicitud para un usuario específico. Es la primera y segunda solicitud en general. Así que si envío un sitio Gatsby con una página marcada como diferida, y si mi rastreador llegara a una página, la generaría. Y cualquier otra persona que visite mi sitio después de eso obtendría esa página como cualquier otra página estática. Así que puedes ver hacia dónde va esto. Gatsby 4 ahora admite todos estos diferentes modos de renderizado.

7. SSG, SSR y DSG en Gatsby

Short description:

Tenemos SSG, SSR y DSG. Optar por DSG es fácil con la función create page y configurando defer en true. SSR es similar con la función get server data. Puedes combinar SSR y datos de tiempo de compilación, lo que permite contenido dinámico y estático en la misma página. Se proporcionan ejemplos de SSR y diferimiento.

Tenemos SSG, que es como de antemano, ¿verdad? Tenemos SSR, que es justo a tiempo, y tenemos DSG, a lo que me gusta llamar a la moda tarde. No es difícil de usar tampoco. Si miras la documentación, realmente todo lo que necesitas hacer para optar por DSG para una página es ejecutar create page. Si has usado Gatsby antes, probablemente lo hayas visto. Si no lo has hecho, es una función. Necesitas pasar una opción más, configurar defer en true, y listo. Incluso puede ser una condición.

En la mayoría de los casos, tus complementos lo manejarán por ti incluso. Optar por SSR es similar. Exportas una función en tu archivo. Se llama get server data. Esto es muy similar a lo que hace Next con get server side props, creo. Las páginas en las que optas por esto se omiten automáticamente en el tiempo de compilación, por lo que no necesitas hacer nada más. Todo funciona. Todo se invalida. Todo está cuidado. Incluso puedes combinar algunas páginas con data de SSR y data de tiempo de compilación. Eso es bastante increíble si lo piensas. Puedes tener páginas de productos que tienen datos de productos que no cambian con frecuencia, que se obtienen en el tiempo de compilación, y puedes tener datos de disponibilidad obtenidos en tiempo de ejecución. Puedes combinar eso en una página. Así que realmente en ese espectro, puedes estar en cualquier punto intermedio con todas tus páginas.

Es Gatsby. Cómo se ven esos ejemplos es así. Así es como se ve una página de SSR en Gatsby. Tienes un componente react como siempre hemos tenido. Lo único diferente aquí respecto a una página regular es esa pequeña exportación al final. Exporta una función asíncrona que obtiene nuestros data. En el momento en que exportas esa función desde un archivo de página o una plantilla, eso se convierte en una página de SSR. Y el ejemplo para el diferimiento es, como dije, es una clave. Simplemente configuras defer en true y eso es todo.

8. Características y disponibilidad de Gatsby V4

Short description:

Tu página está diferida. Gatsby V4 introduce la ejecución paralela de consultas, lo que resulta en compilaciones más rápidas. Gatsby V4 también incluye LMDB, que mejora el rendimiento. Prueba Gatsby V4 ahora e instálalo con 'BM install Gatsby'. Funciona en Gatsby Cloud y otras plataformas en la nube. Gatsby sigue siendo de código abierto.

Tu página está diferida. Todo esto está en Gatsby V4. Tuve que mantener la diapositiva porque es muy bonita. Tiene un doblez agradable. Parece la portada de un álbum de K-pop. Pero sí, todo está en Gatsby V4.

Gatsby V4 tiene otras cosas también. Ahora tenemos la ejecución paralela de consultas. Hemos descubierto cuántos hilos tienes en tu máquina. Ejecutamos todas tus consultas en paralelo. Tus compilaciones son más rápidas. Esperemos que lo notes. Pero no tienes que hacer nada para optar por ello. Simplemente funciona. Es algo que está bajo el capó. También hay muchas otras cosas bajo el capó, incluyendo algo llamado LMDB, que como usuario de Gatsby, no tienes que conocer ni preocuparte, pero se utiliza bajo el capó y hace posible muchas de estas cosas.

Puedes probar Gatsby V4 ahora. Salió ayer. Bastante bien sincronizado, diría yo. Envía BM install Gatsby, y obtendrás Gatsby V4. Y funciona en Gatsby Cloud hoy. También funciona en otras plataformas en la nube. Sabes a qué me refiero con eso. Pero sí, y para ser justos, Gatsby sigue siendo de código abierto. Puedes construir tus activos, implementar ese código realmente en cualquier lugar que desees, siempre y cuando pongas algo de trabajo. Y eso fue todo. Esa fue mi charla. Mi nombre es Sid. Ese es mi nombre de usuario en Twitter. Si tienes preguntas o si quieres hablar, no dudes en enviarme un mensaje directo o mencionarme en un tweet.

QnA

Q&A sobre DSG de Gatsby y Reconstrucción de Páginas

Short description:

Gracias. Gracias. Gracias. Gracias. Gracias. Gracias. Sid, eres mi persona favorita por dos razones. ¿Puedes adaptar el DSG de Gatsby para renderizar páginas en el Edge? Sí, puedes. Si ejecutas una compilación de Gatsby localmente, puedes echar un vistazo a tu directorio .cache. Todos los activos que necesitas para el DSG están ahí. Glenn ha preguntado si los datos no cambian para una ruta en particular, ¿sabe el DSG que no debe reconstruir esa página? La respuesta es sí, puede hacerlo.

Gracias. Gracias. Gracias. Gracias. Gracias. Gracias. Sid, eres mi persona favorita por dos razones. Primero, porque eres increíble. Pero también, estás a tiempo, así que volvemos al horario. Por favor, toma asiento. Bienvenido a la caja caliente.

Así que tenemos muchas preguntas para ti. Y no hay mucha votación en estas. Todas están al mismo nivel en este momento. ¿Las agregaste todas, Jan? No lo hice. OK, aquí vamos. Así que voy a empezar desde arriba.

¿Puedes adaptar el DSG de Gatsby para renderizar páginas en el Edge, por ejemplo, para calcular en el Edge o con Cloudflare Workers? Sí, puedes. Si ejecutas una compilación de Gatsby localmente, puedes echar un vistazo a tu directorio .cache. Todos los activos que necesitas para el DSG están ahí. La documentación es escasa. Acaba de salir hace un par de días. Eso mejorará. Pero puedes hacerlo si miras el directorio .cache. Hay un directorio de funciones dentro de él. Elige algunos de esos archivos. Ponlos en la nube correcta y simplemente funcionará, con suerte.

Genial. Glenn ha hecho la pregunta, si los datos no cambian para una ruta en particular, ¿sabe el DSG que no debe reconstruir esa página, que puede reutilizar la versión del despliegue anterior? Excelente pregunta. La respuesta es sí, puede hacerlo.

Caché y Complejidad en Gatsby

Short description:

Las páginas en Gatsby Cloud se almacenan en caché según su contenido, lo que permite una caché eficiente. Gatsby utiliza internamente LMDB para manejar la complejidad de la serialización y deserialización entre los workers. Esto permite la paralelización y mejora la experiencia del desarrollador. Sin embargo, el uso de DSG para contenido personalizado específico de usuarios autenticados aún no es compatible, pero Gatsby planea introducir un middleware previo a la ruta con este propósito.

Lo bueno de cómo hemos construido las cosas en Gatsby cloud es que las páginas se almacenan en caché según su contenido. Incluso si provienen de una compilación diferente, aún guardamos esos activos estáticos de forma independiente del ID de compilación. Si compilas la misma página una y otra vez, nada ha cambiado. Vamos a usar la misma y simplemente la omitiremos automáticamente.

Tengo una pregunta personal de seguimiento sobre eso. ¿Cuánta complejidad estás introduciendo internamente en Gatsby para que todo esto funcione? Porque el diagrama que dibujas es muy bonito, y es claro, y básicamente es como una caché directa. Pero ¿cuánta magia necesita Gatsby para hacer que esto funcione? Bastante. No voy a mentir, bastante. Y eso es lo que es LMDB. LMDB nos permite serializar y deserializar ese estado entre los workers. Y también nos permite, en el pasado, Gatsby ha tenido mucho de su estado en memoria. Y esa ha sido una de las principales razones por las que no hemos podido movernos a los workers y paralelizar las cosas. Con LMDB, ahora podemos hacerlo. Y sí, hay complejidad. Sí, las cosas bajo el capó son más complicadas. Pero todo es por la experiencia del desarrollador. Y la experiencia del desarrollador es mejor. Así que supongo que vale la pena.

Exactamente. Como desarrollador, aprecio cualquier mejora en mi experiencia. Así que, ya sabes. Y esperamos que eso también se traduzca en la experiencia del usuario al final del proceso.

La siguiente pregunta es de Adam Young. ¿Podemos usar DSG para código que podríamos tener como una ruta del cliente? Algo como contenido personalizado específico para un usuario autenticado, que se almacena en caché específicamente para ellos. Excelente pregunta. Aún no. Porque para poder hacer eso, aún tendrías que. Todavía tendríamos que ejecutar parte de tu código para poder verificar la autenticación por usuario, etc. Tenemos la intención de desarrollar lo que llamamos middleware previo a la ruta durante el tiempo de SSR y DSG. Así que esto sucederá.

Build System Latency and Containerization

Short description:

Pero hasta el día de hoy, no. No puedes. Si quieres ir a SSR en casos de páginas como esa. O ir al lado del cliente. ¿Qué hay del tiempo que tarda el sistema de compilación en arrancar? ¿No agrega mucha latencia? En realidad, es ridículamente rápido. Incluso antes de que termine tu compilación, toda tu compilación. Enviamos eso a través de sockets. Precalentamos los contenedores, que se ejecutarían para SSR. Idealmente, no debería haber ninguna latencia introducida por esta infraestructura. La latencia que verás probablemente se deba a la complejidad del código del usuario y la cantidad de datos que tienes. Pero sí, pensamos en esto.

Pero hasta el día de hoy, no. No puedes. Si quieres ir a SSR en casos de páginas como esa. O ir al lado del cliente.

Genial. ¿Qué hay del tiempo que tarda el sistema de compilación en arrancar? ¿No agrega mucha latencia? Supongo. Vale, respondiste la pregunta.

Esa es una gran pregunta. Realmente trabajamos duro en eso. Pruébalo. En realidad, es ridículamente rápido. Entonces, lo que hacemos es, incluso antes de que termine tu compilación, toda tu compilación. Ahora, la compilación de Gatsby implica varias cosas. Generamos tus paquetes de JavaScript. Generamos CSS. Y luego escribimos archivos HTML por página. Ahora, tus archivos HTML son una función de ese paquete. Pero tu SSR y DSG no tienen que esperar a todos esos. Tan pronto como tengamos tu paquete listo, incluso antes de que termine toda la compilación, los enviamos a través de sockets. Precalentamos los contenedores, que se ejecutarían para SSR. Entonces, antes de que termine tu compilación, tus contenedores de SSR ya están en funcionamiento y listos. También requerimos tu código. Por lo tanto, está en la caché de requerimientos. Todo está precalentado. Idealmente, no debería haber ninguna latencia introducida por esta infraestructura. La latencia que verás probablemente se deba a la complejidad del código del usuario y la cantidad de data que tienes. Pero sí, pensamos en esto. Haré un seguimiento de eso. Siempre he tenido curiosidad. Construyes una plataforma como esta, y siempre te refieres a contenedores.

Optimización de imágenes y tiempos de compilación

Short description:

Entonces simplemente agrupas las instancias de nodo en contenedores y las alojas en algún lugar. Tenemos una imagen personalizada que ejecutamos, muy simplificada. ¿Es viable optimizar las imágenes solo para la primera solicitud o las imágenes deberían ser más críticas? Los tiempos de compilación ahora son una función de tu tráfico.

Entonces simplemente agrupas las instancias de nodo en contenedores y las alojas en algún lugar. Pero ¿tienes que hacer algo optimizado a nivel de plataforma o tiempo de ejecución? ¿Son solo cajas de nodo estándar? Tenemos. Tenemos una imagen personalizada que ejecutamos, muy simplificada que no tiene muchas cosas que normalmente se asocian con la ejecución de cualquier servidor de nodo. Pero en realidad, es solo un contenedor. Es solo node.js.

De acuerdo, genial. Creo que tenemos tiempo para un par de preguntas más, y hay muchas. ¿Es viable optimizar las imágenes solo para la primera solicitud, o las imágenes deberían ser más críticas? Interesante. Aquí está la cosa. Realmente puedes hacer ambas cosas. Creo que depende de tu caso de uso. Si sientes que quieres que tus imágenes, si tus imágenes se comparten entre páginas, y si algunas de esas páginas se generan estáticamente, esas imágenes se generarán críticamente en el tiempo de compilación de todos modos. En caso de que tus imágenes no sean críticas y solo estén en páginas diferidas, se generarán en la primera solicitud. En la mayoría de los casos, no me preocuparía tanto, porque recuerda, solo estamos hablando de la primera solicitud. Cada solicitud después de eso será estática. A menudo, al acceder a una página que enlaza con otra página como esta se activará esa primera solicitud de todos modos, debido a la precarga. Por lo general, no me preocuparía tanto, pero pruébalo.

Genial. Tenemos un par de preguntas más. Creo que Slido debería protegernos de cosas como esto, un comentario en lugar de una pregunta. Pero se coló un comentario y creo que es genial, lo leeré en voz alta. Los tiempos de compilación ahora son una función de tu tráfico. Esto me dejó asombrado. Y esto no es una pregunta, pero me gustaría escuchar un poco más al respecto. Sí, eso. Sí. Y escribí esto esta mañana a las 6 AM. Pero en realidad, si piensas en todos tus sitios generados estáticamente antes de esto, antes de que esto fuera posible, tu tiempo de compilación siempre era una función del número total de páginas que tenías. Si tienes 10,000 páginas, tu tiempo de compilación será una función de cuántas páginas tienes. Pero si marcaras todas tus páginas como diferidas, y probablemente no lo harías para todas tus páginas.

El Futuro de Gatsby y Enfoque en Integraciones

Short description:

Ahora tus tiempos de compilación son simplemente una función de tu tráfico en tiempo de ejecución. Gatsby v4 ha hecho que Gatsby sea viable para varios casos de uso, incluido SSR. El próximo enfoque está en las integraciones y en mejorar la experiencia del desarrollador (DX).

Pero si lo hicieras, tus tiempos de compilación ahora son simplemente una función de tu tráfico en tiempo de ejecución. Tus tiempos de compilación serían muy rápidos. Pero entonces, es casi como dividir tu tiempo de compilación en tu tiempo de compilación inicial y luego tu tiempo de compilación diferido que ocurriría cuando el tráfico llega a tu sitio. Y por eso creo que es una función de tu tráfico.

Excelente. Oh, excelente. Y creo que una pregunta final, esta es buena para terminar, como una respuesta de un minuto. ¿Qué viene a continuación para Gatsby? ¿Cuál es la cosa emocionante a la que estás esperando? Mucho. Creo que con Gatsby v4, en lo que trabajamos y en lo que invertimos mucho fue en poder hacer que Gatsby sea viable para casos de uso para los que antes no lo era. Gatsby nunca había tenido SSR antes. Y eso es algo en lo que hemos estado pensando durante años, y finalmente lo construimos. Creo que ahora Gatsby realmente se puede usar para cualquier tipo de sitio, ya sea que estés haciendo SSR, DSG, SSG, y así sucesivamente. En cuanto a lo que viene a continuación, creo que el DX es lo siguiente para nosotros. Hoy en día, para usar DSG, aún necesitas pasar esa opción. Defer True para Create Page. No admite la API de enrutamiento del sistema de archivos, por ejemplo. Muchos complementos, muchos complementos de la community y CMS necesitan adoptar estas cosas y funcionar de manera nativa. Entonces, lo siguiente para nosotros es enfocarnos en estas integraciones y asegurarnos de que todo funcione realmente como nos gustaría. Y el DX general, eso es lo siguiente para este trimestre.

Increíble. Muchas gracias, Sid. Aplausos para Sid, por favor. Estoy. Gracias. Música

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
Compilador React Forget - Entendiendo React Idiomático
React Advanced 2023React Advanced 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Next.js para Desarrolladores de React.js
React Day Berlin 2023React Day Berlin 2023
157 min
Next.js para Desarrolladores de React.js
Top Content
Featured WorkshopFree
Adrian Hajdin
Adrian Hajdin
En esta avanzada masterclass de Next.js, profundizaremos en conceptos clave y técnicas que permiten a los desarrolladores de React.js aprovechar al máximo Next.js. Exploraremos temas avanzados y prácticas prácticas, equipándote con las habilidades necesarias para construir aplicaciones web de alto rendimiento y tomar decisiones arquitectónicas informadas.
Al final de esta masterclass, serás capaz de:1. Comprender los beneficios de los Componentes del Servidor React y su papel en la construcción de aplicaciones React interactivas, renderizadas por el servidor.2. Diferenciar entre el tiempo de ejecución de Edge y Node.js en Next.js y saber cuándo usar cada uno en función de los requisitos de tu proyecto.3. Explorar técnicas avanzadas de Renderizado del Lado del Servidor (SSR), incluyendo streaming, fetching paralelo vs. secuencial, y sincronización de datos.4. Implementar estrategias de caché para mejorar el rendimiento y reducir la carga del servidor en las aplicaciones Next.js.5. Utilizar Acciones React para manejar la mutación compleja del servidor.6. Optimizar tus aplicaciones Next.js para SEO, compartir en redes sociales, y rendimiento general para mejorar la descubrabilidad y la participación del usuario.
Aventuras de Renderizado Concurrente en React 18
React Advanced 2021React Advanced 2021
132 min
Aventuras de Renderizado Concurrente en React 18
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
Con el lanzamiento de React 18 finalmente obtenemos el tan esperado renderizado concurrente. Pero, ¿cómo va a afectar eso a tu aplicación? ¿Cuáles son los beneficios del renderizado concurrente en React? ¿Qué necesitas hacer para cambiar al renderizado concurrente cuando actualices a React 18? ¿Y qué pasa si no quieres o no puedes usar el renderizado concurrente todavía?

¡Hay algunos cambios de comportamiento de los que debes estar al tanto! En esta masterclass cubriremos todos esos temas y más.

Acompáñame con tu portátil en esta masterclass interactiva. Verás lo fácil que es cambiar al renderizado concurrente en tu aplicación React. Aprenderás todo sobre el renderizado concurrente, SuspenseList, la API startTransition y más.
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced 2022React Advanced 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
Featured Workshop
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.