首页文章列表的文章超量显示的修复记录
问题概括: GitHub Discussions 已发布 13 篇文章,首页文章列表显示全部 13 篇,未按 POSTS_PER_PAGE = 10 截断。
问题类别: 缓存机制 / API 分页
影响范围: 首页文章列表(/ 路由)
问题原因: src/api/github.js 中 getDiscussions 的缓存键仅使用页码(p${page}),未包含 perPage 参数。getCategories 的降级逻辑(分类页空白问题修复成果)调用 this.getDiscussions(1, 100) 时,与首页调用 api.getDiscussions(1, 10) 产生了缓存键冲突(两者均为 discussions_p1),导致首页第 1 页命中了未按 10 篇截断的全量缓存数据(13 篇)。
排查思路:
- 检查
src/pages/Home.js发现其自身不做slice,完全依赖 API 返回数据,因此问题不在渲染层; - 检查
src/api/github.js发现getDiscussions缓存键为`p${page}`,未纳入perPage; - 结合用户之前遇到的缓存问题,以及附件《分类页显示空白问题修复记录.md》中
getCategories降级逻辑调用了this.getDiscussions(1, 100),推断该降级调用污染了首页分页缓存; - 确认缓存键冲突后,将
getDiscussions缓存键改为`p${page}_pp${perPage}`实现隔离。
最佳解决方法: 修改 src/api/github.js 中 getDiscussions 的缓存键,从 `p${page}` 改为 `p${page}_pp${perPage}`,使不同 perPage 参数的调用使用独立缓存,避免降级逻辑污染首页分页数据。
验证状态: ✅ 用户已确认