最近给一个 Next.js 页面补功能时,发现文章列表接口从原来的几十毫秒涨到了接近一秒。数据量并不大,所以第一反应不是增加缓存,而是先确认时间究竟花在哪里。
先测量,再优化
我把请求过程拆成数据库查询、数据转换和页面渲染三段,结果发现真正的问题是循环里的重复查询。每篇文章都会再次读取分类和标签,数据越多,额外查询就越明显。
调整后的处理方式很简单:
- 一次读取当前页需要的文章。
- 批量读取关联分类和标签。
- 在内存中按文章 ID 进行组合。
- 只给稳定且重复使用的数据增加缓存。
本地检查命令:
Plain Texttext
pnpm typecheck
pnpm build缓存不是第一答案
缓存能隐藏慢查询,却不能消除不合理的数据访问方式。先减少无效工作,再考虑缓存失效策略,通常会得到更稳定的结果。
这次排查提醒我:性能优化最重要的不是某个技巧,而是让每一步耗时都变得可观察。

0 评论