Django admin 分页性能问题

来源:2-8 Python 项目开发有哪些最佳实践

979811597

2023-06-12

在Django 后台中,使用 list_per_page = 10,分页可以生效,在本地速度也很快。

但当数据总量到了1000+条,list_per_page=10,的速度就很慢,尤其是在翻页的时候,在本地速度还可以,但是在服务器上,就很慢了。开始以为是数据库问题,后来发现,最立竿见影的方法,就是临时升宽带,从5M升到10M,速度就快了很多。但这不是长久之计。

老师,请问这种问题应该怎么处理?

写回答

1回答

Jack

2023-06-14

Django admin 分页性能问题 数据总量到了1000+条,list_per_page=10,等于说有100多页

在这种情况下,为了提高分页的性能,我们可以考虑以下几个方面:


1.优化数据库查询性能。 如果查询语句效率较低,那么每次查询 10 条数据都需要消耗较多的时间。可以通过 Django ORM 自带的查询优化功能,如 select_related() 和 prefetch_related(),以及数据索引来提高数据库查询速度和性能。


2.添加分页缓存。 可以使用 Django 缓存机制将分页数据缓存在内存中,以减少查询数据库的次数和提高响应速度。


3.使用 Django pagination 插件。 Django 内置了 pagination 的插件,可以用来优化分页性能。其中的 PageNotAnInteger 和 EmptyPage 异常处理器可以保证当用户请求的页码不存在或者不是有效的页码时,能够有合理的响应。


4. 减少查询的总行数。 可以通过限制查询的范围或者使用类似于 Etag 或者 Last-Modified 的 HTTP 缓存机制来减少不必要的数据查询。

0
1
979811597
好的,谢谢老师,在调试的过程中,阴差阳错的把这个问题解决了。在admin.py 中,注释掉list_filter,速度立竿见影就上来了,也不知道为什么。
2023-06-14
共1条回复

Django高级实战 开发企业级问答网站

融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目

900 学习 · 756 问题

查看课程