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

Strapi向Next.js取数据时API响应与URL返回数据不一致

调试Strapi与Next.js数据不匹配问题的方案
  • 排查Next.js的fetch缓存机制
    Next.js默认会对fetch请求做缓存,哪怕URL变更也可能读取旧缓存。可以在请求中强制禁用缓存测试:

    const res = await fetch(url.href, { cache: 'no-store' });
    

    或者给URL追加随机参数绕过缓存:

    url.searchParams.append('timestamp', Date.now());
    
  • 直接验证Strapi API响应
    用Postman、curl或者浏览器直接访问console.log(url.href)输出的API链接,确认返回的是否为id=40的单条数据。如果Strapi返回的是旧数据,要检查:

    • 品牌筛选参数是否正确(比如brand字段值是否为bonux,有无大小写/拼写错误)
    • 关联图片的查询语法是否有误,是否意外影响了结果集
    • Strapi后台的产品数据是否真的更新(比如id=40的产品是否存在、品牌是否正确)
  • 检查getStrapiData()函数逻辑

    • 确认函数内没有全局变量缓存旧数据,每次调用都重新发起请求
    • 打印响应的状态码和头信息,判断是否存在缓存头影响:
      console.log(res.status, res.headers.get('cache-control'));
      
    • 排查是否对返回的data做了额外过滤/映射处理,导致旧数据残留
  • 清理开发环境缓存

    • 重启Next.js开发服务器,避免内存缓存干扰
    • 用Ctrl+Shift+R强制刷新浏览器,清空浏览器本地缓存
  • 查看实际网络请求
    打开浏览器开发者工具的Network面板,对比实际发送的请求URL和console.log(url.href)是否一致,同时查看响应内容是否为旧数据。如果URL不一致,说明构造URL的逻辑存在问题;如果URL一致但响应旧,锁定为缓存或Strapi端问题

内容的提问来源于stack exchange,提问作者Rom-888

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:22:33