关于 django-pagination-performance
面向 Django 开发者的工作流技能,用于排查列表视图和 API 随数据增长而变慢的问题。它通过梳理需求、测量查询并检查稳定排序,帮助选择分页方式。
主要功能
- 01梳理分页需求
- 02测量页面与计数查询
- 03选择偏移或游标分页
- 04设置稳定且有索引的排序
- 05验证深页表现
适用场景
- 01加快大型 Django 信息流
- 02限制高成本的深页访问
- 03排查分页结果不一致
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill django-pagination-performance安装后在 Claude Code 中输入/django-pagination-performance确认已加载。
附带文件references/pagination-patterns.md
详细介绍
Django 分页性能
当 Django 列表视图或 API 随着页码变大或结果集增长而变慢时,请使用此技能。分页既是查询设计问题,也是响应整形问题。
工作流
-
确认列表契约。
- 是否需要任意访问页面,还是只需要上一页/下一页?
- UI 是否需要总数?
- 排序能否固定且稳定?
- 可接受的页面大小上限是多少?
-
衡量当前查询。
- 捕获页面查询和计数查询的 SQL。
- 检查排序、索引和较大的页码。
- 对深页使用
QuerySet.explain()。
-
选择分页方式。
- 对中等规模的结果集和任意页面访问,使用 Django
Paginator。 - 当页码有用但应限制深页时,使用有上限的偏移分页。
- 对大型信息流、时间线、日志和无限滚动,使用键集/游标分页。
- 对需要通过稳定排序进行 API 上一页/下一页导航的场景,使用 DRF
CursorPagination。
- 对中等规模的结果集和任意页面访问,使用 Django
请参阅 pagination-patterns.md,了解 Django 和 DRF 示例。
安全注意事项
- 深层
LIMIT/OFFSET页面可能会很慢,因为数据库仍需遍历被跳过的行。 - 未排序的查询集会导致页面内容不一致。
- 游标分页会限制任意跳转页面和用户控制排序。
- 大型精确计数可能会成为列表延迟的主要来源。
验证
根据所选分页契约,衡量第一页、有代表性的深页、计数查询,以及插入/删除时的一致性。
评论
支持 Markdown