首页文章列表的文章超量显示的修复记录

问题概括: GitHub Discussions 已发布 13 篇文章,首页文章列表显示全部 13 篇,未按 POSTS_PER_PAGE = 10 截断。

问题类别: 缓存机制 / API 分页

影响范围: 首页文章列表(/ 路由)

问题原因: src/api/github.jsgetDiscussions 的缓存键仅使用页码(p${page}),未包含 perPage 参数。getCategories 的降级逻辑(分类页空白问题修复成果)调用 this.getDiscussions(1, 100) 时,与首页调用 api.getDiscussions(1, 10) 产生了缓存键冲突(两者均为 discussions_p1),导致首页第 1 页命中了未按 10 篇截断的全量缓存数据(13 篇)。

排查思路:

  1. 检查 src/pages/Home.js 发现其自身不做 slice,完全依赖 API 返回数据,因此问题不在渲染层;
  2. 检查 src/api/github.js 发现 getDiscussions 缓存键为 `p${page}`,未纳入 perPage
  3. 结合用户之前遇到的缓存问题,以及附件《分类页显示空白问题修复记录.md》中 getCategories 降级逻辑调用了 this.getDiscussions(1, 100),推断该降级调用污染了首页分页缓存;
  4. 确认缓存键冲突后,将 getDiscussions 缓存键改为 `p${page}_pp${perPage}` 实现隔离。

最佳解决方法: 修改 src/api/github.jsgetDiscussions 的缓存键,从 `p${page}` 改为 `p${page}_pp${perPage}`,使不同 perPage 参数的调用使用独立缓存,避免降级逻辑污染首页分页数据。

验证状态: ✅ 用户已确认