De Segmentos a Suspense: El Futuro del Caching en Next.js

Bookmark
Rate this content

Las aplicaciones de Next.js de hoy en día luchan con una contradicción arquitectónica: las rutas completas deben ser completamente estáticas o completamente dinámicas, lo que obliga a los desarrolladores a sacrificar rendimiento por frescura o viceversa. Este enfoque de todo o nada lleva a cálculos redundantes, costos aumentados y experiencias de usuario más lentas.

En esta sesión, exploraremos los Componentes de Caché — una característica experimental de Next.js que introduce el almacenamiento en caché a nivel de función a través de la directiva `'use cache'`. Basándonos en las capacidades de transmisión de React y la infraestructura de Pre-renderizado Parcial, demostraremos cómo lograr un control granular sobre lo que se precomputa en shells estáticos frente a lo que se transmite dinámicamente. Aprenderás patrones prácticos para escenarios comunes como cálculos costosos, requisitos de datos en tiempo real y el sofisticado término medio entre ellos. Examinaremos migraciones de producción que muestran reducciones mejoradas en los costos de cómputo y reducción del Tiempo al Primer Byte desde ubicaciones globales de borde.

Te irás con un nuevo modelo mental para el almacenamiento en caché, no como una reflexión posterior al rendimiento, sino como una decisión arquitectónica de primera clase que vive junto a tus componentes. En lugar de elegir entre rutas "estáticas" o "dinámicas", entenderás cómo componer contenido en caché y en transmisión dentro del mismo árbol de componentes, creando aplicaciones que son tanto eficientes como arquitectónicamente honestas sobre sus requisitos de datos.

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

Wyatt Johnson
Wyatt Johnson
27 min
28 Nov, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Introducción a los Componentes de Caché en Next.js 16, transformando el enrutador de aplicaciones con nuevas características como pre-renderizado parcial, Dynamic I.O. y directivas de caché. Profundización en la generación de parámetros estáticos en Next.js centrándose en los cambios en la generación de parámetros estáticos para mejorar el rendimiento. Exploración de los desafíos de generar parámetros estáticos y equilibrar la representación estática vs. dinámica para un mejor rendimiento. Abordar desafíos con componentes de caché, optimizando la representación estática y dinámica para mejorar el rendimiento. Comprender el impacto de los parámetros en la representación con componentes de caché, gestionar componentes dinámicos e introducir límites de suspense para cargas de página más rápidas. Mejorar las APIs de vida de caché, introduciendo un nuevo modelo de caché para salidas estáticas en Next.js. Revolucionar la gestión de caché con control granular sobre los tiempos de vida de caché y la configuración de segmentos dinámicos. Navegar por los datos y el almacenamiento en caché en Next.js, explorando la guía de componentes de caché y las diferencias de almacenamiento en caché entre componentes del servidor y del cliente.

1. Explorando Componentes de Caché en Next.js 16

Short description:

Introducción a los Componentes de Caché en Next.js 16, transformando el enrutador de la aplicación con nuevas características como el pre-renderizado parcial, Dynamic I.O., y directivas de caché. Con el objetivo de proporcionar a los desarrolladores una solución integral para aplicaciones React rápidas y dinámicas.

Cómo Usar React. Hola a todos. Gracias por acompañarme hoy. Obviamente, mi nombre es Wyatt Johnson. Soy ingeniero de software en el equipo de Next.js en Vercel.

La charla de hoy es una exploración más profunda de algunos de los cambios que hemos introducido con Next.js 16, específicamente los Componentes de Caché. Los Componentes de Caché son el futuro del enrutador de aplicaciones de Next.js que combina muchas de las características experimentales que hemos estado desarrollando en los últimos años en un solo concepto. Ahora, con una sola opción de configuración, puedes obtener las técnicas de renderizado de pre-renderizado parcial, la detección dinámica de Dynamic I.O., y las nuevas directivas de caché, como Use Cache.

Juntas, estas características pintan un futuro mucho más completo del enrutador de aplicaciones. De hecho, subí al escenario el año pasado en Next.js Conf para discutir el pre-renderizado parcial y Dynamic I.O. Queríamos que los desarrolladores entendieran el razonamiento detrás de algunas de las decisiones técnicas que tomamos, junto con proporcionar algunos ejemplos concretos de cómo Dynamic I.O. mejoró la experiencia del desarrollador. Al igual que entonces, hoy vamos a hablar sobre cómo los Componentes de Caché resuelven muchos de los problemas que los desarrolladores enfrentan hoy.

Cuando comenzamos el desarrollo del enrutador de aplicaciones, nuestro objetivo era crear una nueva forma de desarrollar aplicaciones React que ofreciera experiencias rápidas y dinámicas para sus usuarios. El Enrutador de Aplicaciones aprovechó los React Server Components para habilitar todo, desde la carga de datos co-localizados dentro de sus componentes, hasta las mutaciones de datos impulsadas por acciones del servidor. Significaba que ahora, en lugar de escribir GetStatic Props o GetServerSide Props, los desarrolladores podían simplemente escribir React.

Podían consultar sus bases de datos dentro de sus componentes, o acceder a datos de solicitud, como cookies. Next.js utilizó esta información que recopiló en tiempo de compilación para determinar si una página podía ser renderizada estáticamente, o si necesitaba renderizar cada solicitud dinámicamente. Pero, había un problema con este diseño. A medida que los desarrolladores comenzaron a construir aplicaciones cada vez más complejas, tuvieron que ser cada vez más vigilantes para asegurarse de que no introdujeran regresiones de rendimiento.

Agregar un componente a una página que accedía a datos de solicitud significaba que toda la página no podía ser renderizada estáticamente, dejando a los usuarios esperando que su página cargara. Habíamos creado un camino de montaña sin barandillas. Pequeños errores podrían resultar en grandes impactos en el rendimiento. Necesitábamos una manera de guiar a los desarrolladores para que sus aplicaciones siguieran siendo rápidas, sin sacrificar la flexibilidad que ofrece el renderizado dinámico.

Después de años de desarrollo, literalmente años, creemos que los Componentes de Caché tienen esa solución. No es solo una opción de configuración, es en realidad un nuevo modelo de programación, ya que proporciona una nueva forma para que las partes estáticas y dinámicas de tus aplicaciones React se compongan juntas. Bajo este nuevo modelo, los componentes no solo co-localizan sus datos, también co-localizan su caché. Para ayudar a los desarrolladores, Next.js ahora proporciona más retroalimentación para asegurar que estén guiados hacia la creación de la mejor versión de sus aplicaciones.

Ahora, cuando un componente intenta acceder a datos específicos de la solicitud, como cookies, Next.js produce un error de compilación si ese componente, o sus padres, no están envueltos en un límite de suspense. Esto asegura que las aplicaciones que quieren mostrar datos dinámicos aún puedan tener algo estático para enviar en la carga inicial, transmitiendo el contenido dinámico después.

2. Inmersión Profunda en la Generación de Static Params en Next.js

Short description:

Introduciendo un nuevo modelo de programación con directivas de caché como useCache, centrándose en los cambios en la generación de static params en Next.js para mejorar el rendimiento y los posibles escollos para desarrolladores inexpertos.

Otras formas de I-O, como las llamadas fetch o las consultas a bases de datos, también se marcan automáticamente como dinámicas, gracias a Dynamic I-O. Para marcar I-O como estáticamente cacheable, el desarrollador solo necesita anotar ese código con una directiva de caché, como useCache. Queríamos introducir este nuevo modelo de programación de una manera que llevara a los desarrolladores a sacar el máximo provecho del framework. También queríamos hacer esto introduciendo la menor cantidad de nuevas APIs posible, para que los desarrolladores no tuvieran que aprender tantos conceptos nuevos. Hoy, me voy a centrar solo en algunos de estos cambios que hemos introducido con los componentes de caché.

Exploraremos algunos de los cambios para generar static params y las deprecaciones de opciones de configuración de segmentos para revalidate y dynamic. Primero, exploremos los cambios para generar static params. Recorriendo algunas partes de una aplicación de comercio electrónico ficticia, podemos ilustrar estos en acción. Esta es nuestra página de producto. Como esta página tiene parámetros de ruta dinámicos, categoría y slug, se marca como dinámica por defecto. Esto significa que cuando los usuarios intentan visitar una página de producto, tendrán una página nueva renderizada en el servidor para cada solicitud. Si estas páginas de productos se visitan con frecuencia, podemos querer aprovechar el renderizado estático para que pueda ser servida rápidamente desde el edge, mejorando la velocidad de navegación en el sitio.

Para decirle a Next.js que queremos renderizar esta página estáticamente, necesitamos exportar generateStaticParams para proporcionar opcionalmente algunos parámetros que queremos prerenderizar. Vamos a añadir eso ahora. Perfecto. Ahora, cuando un usuario visita una página de producto por primera vez, esta página se renderiza estáticamente y ahora puede ser servida rápidamente para todas las visitas posteriores. ¿Hemos terminado, verdad? Aunque esto puede haber funcionado inicialmente, este código enmascara un peligro que los desarrolladores inexpertos podrían pasar por alto. Días, semanas o meses después, un cambio aparentemente no relacionado en otro componente podría romper silenciosamente esta página en producción.

¿El culpable? Esta línea. Es un poco difícil de ver en la parte inferior de la diapositiva. No es que devolver un array vacío desde generateStaticParams sea inherentemente un error por sí mismo. El error en sí se manifiesta cuando un componente del servidor que fue renderizado en esta página o diseño intenta acceder a datos de solicitud, como headers. Vamos a actualizar nuestra página con un ejemplo de eso para ver cómo funciona. Ahora, nuestra página de producto incluye nuestro nuevo componente userDeals. Dentro, lee los headers de la solicitud para determinar el país del usuario para poder presentarles ofertas relevantes para su región. Cuando ejecutamos Next. build, todo parece estar bien y se despliega con éxito en producción. Sin embargo, cuando intentamos navegar a una de estas páginas de producto, obtenemos un error.

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

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.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
El Nuevo Router de Aplicaciones Next.js
React Summit 2023React Summit 2023
27 min
El Nuevo Router de Aplicaciones Next.js
Top Content
Today's Talk is about the Next.js App Router, which has evolved over the years and is now a core feature of Next.js. The Talk covers topics such as adding components, fetching remote data, and exploring layouts. It also discusses submitting form data, simplifying code, and reusing components. The App Router allows for coexistence with the existing pages router and enables data fetching at the layout level using React Server Components.
No sabes cómo hacer SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
No sabes cómo hacer SSR
The Talk covers the speaker's personal journey into server-side rendering (SSR) and the evolution of web development frameworks. It explores the use of jQuery for animations in SSR, the challenges faced in integrating React with Umbraco, and the creation of a custom SSR framework. The Talk also discusses the benefits of Next.js and the use of serverless artifacts for deployment. Finally, it highlights the features of Astro, including its function per route capability.
Cómo manejar correctamente los cambios de URL slug en Next.js
TypeScript Congress 2022TypeScript Congress 2022
10 min
Cómo manejar correctamente los cambios de URL slug en Next.js
Top Content
This Talk explains how to handle URL slug changes in Next.js by using the getStaticPaths and getStaticProps methods. It covers implementing redirects and provides a solution to eliminate the need for editors to perform additional steps. The approach involves tracking URL slug changes and issuing proper redirects. The speaker encourages the audience to reach out with any questions or experiences with handling URL slugs.
Eliminando BFFs con GraphQL y Next.js
React Advanced 2021React Advanced 2021
21 min
Eliminando BFFs con GraphQL y Next.js
Top Content
This talk discusses the challenges and benefits of using Backend for Frontends (BFFs) and microservices in software development. It highlights how Next.js can simplify the creation of BFFs and unify the gateway for microservices. The talk also emphasizes the advantages of Next.js API routes in simplifying the development, deployment, and maintenance of APIs. It showcases the implementation of a BFF using Next.js and API routes, and the extension of API routes in an executable way. The speaker also mentions launching a course on using Next.js API routes for building a serverless GraphQL API.

Workshops on related topic

AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Top Content
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
Tracing: Frontend Issues With Backend Solutions
React Summit US 2024React Summit US 2024
112 min
Tracing: Frontend Issues With Backend Solutions
Top Content
Featured WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Los problemas de frontend que afectan a tus usuarios a menudo son provocados por problemas de backend. En esta masterclass, aprenderás cómo identificar problemas que causan páginas web lentas y malos Core Web Vitals usando tracing.
Luego, pruébalo tú mismo configurando Sentry en un proyecto Next.js ya preparado para descubrir problemas de rendimiento, incluyendo consultas lentas a la base de datos en una sesión interactiva de programación en pareja.
Saldrás de la masterclass siendo capaz de:- Encontrar problemas de backend que podrían estar ralentizando tus aplicaciones de frontend- Configurar tracing con Sentry en un proyecto Next.js- Depurar y solucionar problemas de rendimiento deficiente usando tracing
Este será un evento en vivo de 2 horas donde tendrás la oportunidad de codificar junto con nosotros y hacernos preguntas.
El Viaje Desde el Frontend con React al Desarrollo Fullstack Con Next.js
React Summit 2025React Summit 2025
91 min
El Viaje Desde el Frontend con React al Desarrollo Fullstack Con Next.js
Featured Workshop
Eric Burel
Eric Burel
Únete a nosotros en el viaje desde el desarrollo frontend con React hasta el desarrollo fullstack con Next.js. Durante esta masterclass, seguiremos el tutorial oficial de Next.js Learn con Eric Burel, entrenador profesional y autor de NextPatterns.dev. Juntos, configuraremos un sitio web con Next.js y exploraremos sus características del lado del servidor para construir aplicaciones de alto rendimiento.
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
Workshop
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
Workshop
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
Top Content
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.