在Vercel上部署Nextjs 13应用程序时,尽管使用了缓存,但数据未更新:获取请求中的“no-store”

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

我的应用程序中有一个feed组件,它从API端点获取数据。当我在本地构建上测试该组件时,它工作正常,但当我在Vercel上部署它时,它无法获取最新数据。我怀疑这个问题与缓存有关。为了解决这个问题,我添加该高速缓存:'no-store'选项,但它似乎并不能解决问题。我将感谢任何帮助或建议来解决这个问题。

"use client";

  const fetchPosts = async () => {
    const response = await fetch("/api/prompt", {
      cache: 'no-store',
    });
    const data = await response.json();
    setAllPosts(data);
  };

  useEffect(() => {
    fetchPosts();
  }, []);

GitHub链接:https://github.com/justinwkUKM/promptify/blob/main/components/Feed.jsx
注:请提供在Vercel上部署时缓存问题的任何建议或解决方案。谢谢你!

bvhaajcl

bvhaajcl1#

你和我的问题完全一样。我能找到一个解决办法:
/app/api/prompt/route.js

import Prompt from "@models/prompt";
import { connectToDB } from "@utils/database";

export const revalidate = 1; //revalidate api every 1 second
export const GET = async (request) => {
    try {
        await connectToDB()

        const prompts = await Prompt.find({}).populate('creator')

        return new Response(JSON.stringify(prompts), { status: 200 })
    } catch (error) {
        return new Response("Failed to fetch all prompts", { status: 500 })
    }
}

我真的无法解释为什么Next会这样工作,但这为我解决了这个问题。

相关问题