很明显,Next.js为SSG页面返回了304 Not Modified HTTP状态,但它能为实时呈现的页面返回304 Not Modified HTTP状态吗?
反过来说,当最初请求SSR页面时,Next.js是否返回ETag标头?
谢谢。
Next.js v13(至少(似乎可以,但您必须设置状态代码和ETag
/Last-Modified
,并自己检查传入的If-None-Match
/If-Modified-Since
标头。
模拟代码:
export const getServerSideProps = async (ctx) => {}
const { req, res } = ctx;
if (shouldReturnNotModified(req)) {
res.statusCode = 304;
return { props: {} };
}
res.setHeader('ETag', generateETag(req));
return {
props: await fetchAllTheProps(req),
};
}
// This is not rendered if the `res.statusCode` is 304
export default function MyPage (props) {
return (
<div>
Render the page's 200 OK response
using all the props
</div>
);
}
Next.js唯一真正有帮助的是,如果它注意到您已将res.statusCode
设置为304,则跳过呈现响应体。
这些都没有正式记录。(在Nextjs文档中搜索"304"返回0个结果。(
您可以更新标题以在页面上添加缓存。更多信息,请访问:https://nextjs.org/docs/going-to-production#caching