前段时间抽空吧旧博文导入到django博客中来,并简单添加了文章分页处理。(当前django3.0文档都已经在官网上线,django迭代速度还是非常快的)
django博客刚开始的时候只有10来篇文章,但导入旧博文之后一共有360+文章数,而且归档页没有做分页Ajax加载,都是一次性查询出来的。
下面是优化前执行的查询语句:
effective = {'status': 'published', 'post_type': 'post'}
object_list = Article.objects.filter(**effective).order_by('-created')
优化前加载页面需要的时间:
下面是优化后执行的查询语句:
effective = {'status': 'published', 'post_type': 'post'}
object_list = Article.objects.filter(**effective).only('created', 'author', 'title').select_related('author').order_by('-created')
优化后效果如下(客户端服务端均无缓存的情况下):
优化后效果如下(客户端服务端均有缓存的情况下):
效果还是立竿见影的。
关于django查询优化可查看官方文档:DB optimization