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>
);
}
2条答案
按热度按时间2ekbmq321#
您可以更新标题以在页面上添加缓存。有关详细信息,请访问:https://nextjs.org/docs/going-to-production#caching
2admgd592#
从Next.js v13(至少)开始,你似乎可以这样做,但是你必须设置状态代码和
ETag
/Last-Modified
,并自己检查传入的If-None-Match
/If-Modified-Since
头。模拟代码:
Next.js唯一真正有帮助的是,如果它注意到您将
res.statusCode
设置为304,则跳过响应主体的呈现。这些都没有正式的文档记录(在Nextjs文档中搜索“304”返回0个结果)。