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

NextJS+Hygraph博客新内容不显示,旧内容残留问题求助

解决NextJS+Hygraph显示已删除旧文章的问题

1. 清理NextJS静态缓存

如果你的页面用了getStaticProps,NextJS会缓存生成的静态页面,这是最常见的原因:

  • 开发环境:直接重启开发服务器(按ctrl+c终止后重新运行npm run dev),或者删掉项目根目录的.next文件夹再重启
  • 生产环境:部署时加上revalidate配置让页面自动刷新,比如在getStaticProps里写:
export async function getStaticProps() {
  const allPosts = await getPosts()
  return {
    props: { allPosts },
    revalidate: 60 // 每60秒重新拉取最新数据生成页面
  }
}

2. 检查Hygraph的查询语句

虽然调用代码一样,但AllPosts这个GraphQL查询可能有差异:

  • 打开Hygraph后台,查看你的AllPosts查询是否加了发布状态过滤,比如只取status: PUBLISHED的文章。如果旧文章只是改成草稿没彻底删除,或者查询没过滤状态,就会被返回
  • 对比官方示例的查询,确保你的AllPosts是类似这样的:
query AllPosts {
  posts(orderBy: publishedAt_DESC, where: { status: PUBLISHED }) {
    id
    title
    publishedAt
    # 其他需要的字段
  }
}
  • 另外确认Hygraph里的旧文章是彻底删除(不是丢回收站),回收站的文章有些查询可能还会返回,记得清空回收站

3. 清除Hygraph的CDN缓存

Hygraph默认会缓存查询结果,哪怕你改了数据,缓存没过期就会返回旧内容:

  • 登录Hygraph项目后台,去Settings > Caching里手动清除缓存(找"Purge Cache"按钮)
  • 或者修改HygraphClient的配置,强制请求不缓存:
import { createClient } from '@graphcms/rich-text-react-renderer'

const HygraphClient = createClient({
  endpoint: process.env.HYGRAPH_ENDPOINT,
  token: process.env.HYGRAPH_TOKEN,
  fetchOptions: {
    cache: 'no-store' // 禁用缓存,每次都拉最新数据
  }
})

4. 核对环境变量

检查项目根目录的.env.local文件,确保HYGRAPH_ENDPOINT和HYGRAPH_TOKEN指向的是你正在修改的Hygraph项目,别不小心用了测试环境的项目,导致数据对不上


内容的提问来源于stack exchange,提问作者Caleb Cleavinger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:46:10