es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Nextjs lee la caché de .next/server/pages/ cuando se utiliza ISR y es posible servirla desde una CDN?

Quiero implementar un proyecto próximo fuera de Vercel y estoy confundido sobre cómo funciona la caché. Al acceder a la URL de una página con ISR habilitado, puedo confirmar que la base de datos no se accede antes de que termine el período de revalidación, pero…

Primera pregunta: La página generada parece estar en .next/server/pages/mypage.html (y mypage.json); sin embargo, al revisar las herramientas de desarrollo después de solicitar la URL de la página, solo veo múltiples solicitudes a .next/static/* y .next/static/chunks/pages/*, que parecen ser archivos generados en tiempo de compilación que no saben nada acerca de lo que ha sido regenerado por ISR al acceder a la base de datos. No puedo encontrar nada relacionado con .next/server/pages. ¿Alguien puede explicarme eso?

Segunda pregunta: Si se accede desde .next/server, ¿es posible almacenar en caché a través de un CDN, dado que la documentación de NextJS solo recomienda alojar .next/static en el CDN?

La configuración exacta para cargar tus archivos a un CDN específico dependerá de tu CDN de elección. La única carpeta que debes alojar en tu CDN es el contenido de .next/static/, que debe cargarse como _next/static/, como indica la solicitud de URL anterior. No cargues el resto de la carpeta .next/, ya que no debes exponer tu código de servidor y otras configuraciones al público.

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Respuestas para implementar un proyecto Next.js fuera de Vercel y uso de caché

    Primera pregunta

    La página generada de un proyecto Next.js con ISR habilitado se encuentra en el directorio .next/server/pages/mypage.html (y mypage.json). Sin embargo, al acceder a la página a través de su URL, se realizan múltiples solicitudes a .next/static/* y .next/static/chunks/pages/*. Estas solicitudes son para archivos generados en tiempo de compilación y no conocen la regeneración de la página a través de ISR cuando se accede a la base de datos.

    La razón de este comportamiento es que Next.js genera páginas HTML estáticas en tiempo de compilación y las sirve estáticamente desde el directorio .next/server/pages. Sin embargo, cuando una página utiliza ISR, sus datos pueden ser validados nuevamente en tiempo de ejecución. Cuando esto ocurre, Next.js genera nuevas páginas HTML estáticas y las sirve desde .next/cache/ISR/dynamic. Por lo tanto, al acceder a la URL de una página con ISR, la solicitud inicial obtiene la página HTML estática desde .next/server/pages y cualquier solicitud posterior se realiza a las nuevas páginas generadas en tiempo de ejecución y servidas desde .next/cache/ISR/dynamic.

    Segunda pregunta

    Si una página se está accediendo desde .next/server, es posible almacenar en caché a través de un CDN. Sin embargo, según la documentación de Next.js, la única carpeta que debe alojarse en el CDN es el contenido de .next/static/, que debe cargarse como _next/static/. Esto se debe a que los activos estáticos ya están optimizados y en caché por Next.js.

    Por lo tanto, si se utiliza un CDN, solo los archivos estáticos generados por Next.js durante el proceso de compilación deben alojarse en él. El contenido dinámico generado a través de ISR debe ser servido a través del servidor de Next.js.

Comments are closed.