我使用nginx作为服务器。
在使用Django加载简单的html页面时没有任何查询,加载只需34毫秒。
<html><body><h1> Test</h1></body></html>
如果运行一些查询(查询中有500行),则加载页面需要4秒钟。
views.py
def testing3(request):
context = User.objects.all()
return render_to_response('pages/index1.html', {'users': context,})
index1.html
<html>
<head> <title>Testing </title> </head>
<body>
Testing
<h1>Testing</h1>
{% for e in users %}
<table>
<tr> <td class="active">{{ e.username }}</td>
<td>{{ e.email }}</td> </tr>
</table>
{% endfor %}
</body>
</html>
如何减少加载时间。
如何减少等待时间?
答案 0 :(得分:2)
首先:优化您的数据库查询。
如果您只想显示几个数据库字段(示例中为user.username
和user.email
)并且不需要任何模型的方法,请改用ValuesQuerySet
:< / p>
def myview(request):
users = User.objects.values("username", "email")
return render_to_response('pages/index1.html', {'users': users,})
OTHO如果您需要相关对象,请在查询中使用"select_related"关键字arg以避免“n + 1个查询”问题。
完成此操作后,如果您的查询返回数百条或更多条记录,则需要paginate查询集。这对查询集特别有效,因为它使用SQL offset
和limit
子句,因此分页实际上是在db级别完成的。
此时,至少在ORM / db级别,你应该已经有了显着的提升。如果渲染本身(模板级别)仍然需要花费太多时间,那么可以考虑使用cache。