You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13部署Vercel后数据不更新,设置cache: 'no-store'仍无效

Feed组件部署Vercel后无法获取最新数据的解决方案

问题说明

Feed组件本地构建测试时运行正常,但部署到Vercel后无法获取API端点的最新数据。已在fetch请求中添加cache: '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();
}, []);

可行解决方案

  • 强制API路由禁用缓存:如果/api/prompt是Next.js API路由,仅前端设置fetch缓存规则不足以绕过Vercel边缘缓存,需在后端响应中明确设置缓存控制头:

    export async function GET() {
      // 数据获取逻辑
      return new Response(JSON.stringify(yourData), {
        headers: {
          'Cache-Control': 'no-store, no-cache, must-revalidate, proxy-revalidate',
          'Pragma': 'no-cache',
          'Expires': '0',
        },
      });
    }
    

    若使用App Router,可直接在路由文件顶部添加export const revalidate = 0;实现禁用缓存。

  • URL追加时间戳参数:在请求URL后添加随机时间戳,强制每个请求被视为新请求,绕过所有层级缓存:

    const response = await fetch(`/api/prompt?_=${Date.now()}`, {
      cache: 'no-store',
    });
    
  • 调整Vercel项目缓存策略:进入Vercel项目后台,在「Settings」->「Edge Network」->「Cache Rules」中,为/api/*路径创建自定义规则,设置「Cache Level」为「No Cache」,确保边缘节点不缓存API响应。

  • 确保页面动态渲染:若组件所在页面为静态生成,初始数据可能过时。可在页面级别添加export const dynamic = "force-dynamic";(App Router)或使用getServerSideProps(Pages Router),确保页面每次请求都重新渲染。

内容的提问来源于stack exchange,提问作者Waqas Khalid Obeidy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:57:21