Gok*_*aya 6 memoization node.js reactjs next.js next.js13
request memoization
我正在使用 NextJS 13 开发 React 项目,但在使用for时遇到问题fetch
。即使在同一个请求中,它也总是向后端发送请求。
我有一个简单的端点,http://localhost:8088/test
仅记录一些内容以检查是否收到请求。我的page.tsx
. 当我重新加载页面时,我在后端服务器中看到 4 个日志;2 来自元数据 2 来自页面。即使是完全相同的请求,也不会按照NextJS 文档中的说明进行重复数据删除
我在这里缺少什么,为什么fetch('http://localhost:8088/test')
实际上被执行了四次。如何使用请求记忆,以便我可以在两者中使用相同的数据Page
,并且generateMetadata
此代码仅执行一次请求?
import { Metadata } from 'next';
export const dynamic = 'force-static';
export const fetchCache = 'force-no-store';
async function getItem() {
const res = await fetch('http://localhost:8088/test');
return res.json();
}
export async function generateMetadata(): Promise<Metadata> {
getItem();
getItem();
return {
metadataBase: new URL('localhost:3000'),
title: 'test'
};
}
export default async function Page() {
getItem();
getItem();
return (
<>
<p>test</p>
</>
);
}
Run Code Online (Sandbox Code Playgroud)
Ame*_*icA -2
您应该在方法中禁用缓存fetch
。请记住,在 NextJs 中,一切都基于转换,而不是配置:
const res = await fetch(
'http://localhost:8088/test',
{ cache: 'no-store' }
);
Run Code Online (Sandbox Code Playgroud)
通过使用此转换,NextJs 将了解不要缓存此组件中的任何内容。
归档时间: |
|
查看次数: |
986 次 |
最近记录: |