Estoy tratando de personalizar los encabezados Cache-Control
con los que responde mi servidor NextJS cuando sirve páginas que se generaron en el momento de la compilación (SSG). La razón es simple: dado que la CDN almacena en caché cada respuesta del servidor de acuerdo con sus encabezados, y dado que quiero que cada página estática se actualice tan pronto como implemente una nueva implementación, la política de almacenamiento en caché predeterminada ( s-maxage=31536000, stale-while-revalidate
, source ) no es suficiente para mí.
La opción de revalidate
, si se establece en 1
( 0
arroja un error de compilación), se acercaría mucho al comportamiento previsto, pero tendría el desafortunado efecto secundario de regenerar la página como máximo una vez por segundo. Como se indicó anteriormente, la página es estrictamente estática, por lo que renderizarla en el servidor 60 veces por minuto solo sería una pérdida de recursos.
export const getStaticProps: GetStaticProps< EntityProps, EntityPathParams > = async (context) => { const id = context.params.id; const entity = getEntity(id); // Activates ISR--waste of resources return { props: entity, revalidate: 1 }; };
Cabe señalar que los encabezados Cache-Control
que uno establece en su next.config.js
se anulan de manera muy "útil" en producción , por lo que esta no es una solución factible.
module.exports = { // ... async headers() { return [ // Overridden in production { source: '/entity/:path', headers: [ { key: 'Cache-Control', value: 'public, max-age=0, must-revalidate', }, ], }, ]; }, };
No veo ninguna forma de personalizar los encabezados en este momento. ¿Estoy equivocado? ¿Puede indicarme algunos recursos adicionales? ¿Conoces algún enfoque alternativo?