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
相关产品推荐
相关产品推荐

