bounty将在2天后过期。回答此问题可获得+50的声誉奖励。Aiden Barrett正在寻找来自声誉良好来源的答案:我确实需要布局来呈现来自静态构建的数据,而不是每次都在服务器上请求数据
我正在尝试创建一个布局组件,它可以获取自己的数据,我尝试过添加该高速缓存:'force-cache'到获取,但每次我更新我的CMS内容和刷新我的页面的新内容被加载。这里是我的代码的一个例子:
const getLayoutData = async () => {
const response = await fetch(
`https://cdn.contentful.com/spaces/${
process.env.CONTENTFUL_SPACE_ID
}/environments/${
process.env.CONTENTFUL_ENVIRONMENT || "master"
}/entries/${fieldId}?access_token=${process.env.CONTENTFUL_ACCESS_TOKEN}`,
{
cache: "force-cache",
}
);
const {entryTitle, ...headerData} = await response.json();
return { headerData };
}
export default async function Layout() {
const data = await getLayoutData();
...
2条答案
按热度按时间fslejnso1#
您可以使用
getStaticProps()
函数在构建时获取数据,并将其作为 prop 提供给组件。这样,数据将在服务器上预先呈现,并且在用户刷新页面时不会更改:或者你可以使用
getServerSideProps()
,它在请求时而不是构建时在服务器上运行。如果你有经常变化的动态数据,我建议你:qgzx9mmu2#
默认情况下,Next.js会自动执行静态获取。这意味着数据将在构建时获取、缓存并在每次请求时重用。作为开发人员,您可以控制静态数据的缓存和重新验证方式。
请参阅文档-https://beta.nextjs.org/docs/data-fetching/fundamentals
而且,这将在生产模式下工作。所以,请确保您使用的是
next build && next start
而不是next dev
。如果你从同一个URL获取数据,该高速缓存可能会更新,因为Next.js也会请求内置在
fetch
函数中的去重。