在NextJS应用路由器中设置Cache-Control头

yb3bgrhw  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(292)

我一直在为这事绞尽脑汁我正在使用NextJS 13的新应用路由器。我尝试通过middleware.ts设置响应Cache-Control头,但它没有改变。我也在next.config.js中尝试过,这也不起作用。我在设置自定义头文件时没有问题,但NextJS总是自动将Cache-Control设置为“no-store,must-revalidate”。我错过了什么?如何更改此标题?

sc4hvdpw

sc4hvdpw1#

带有App Router的NextJS自动处理cache-control头。如果您尝试在next.config.js中设置它,它将在生产环境中被内置缓存机制覆盖
在开发模式npm run dev中该高速缓存是no-store, must-revalidate
在生产环境中,NextJS 13使用SWR策略(s-maxage=31536000, stale-while-revalidate)。对于数据获取和动态生成的页面内容,只有缓存失效机制。
最初静态呈现的页面目前没有机制在Vercel的托管生态系统之外的初始加载时强制最终用户进行新的获取,该生态系统处理此问题。
如果你不需要服务器端渲染,我建议不要使用Next,而使用Vite。如果你确实需要服务器端渲染,并且不想在Vercel上托管,我建议你使用一个不那么黑盒的框架来适应Vercel的生态系统(比如Remix)。

相关问题