先看代码
views.py:
def vms(request):
user = request.user
servers = List.objects.all()
return render_to_response(
'vmserver/all_vms.html', {
'list': servers,
'user': user,
}
)
template:
<p class="dataTable_wrapper">
<table class="table table-striped table-bordered table-hover" id="dataTables-example" width="100%">
<thead>
<tr>
<th>主机名</th>
<th>IP地址</th>
<th>应用名称</th>
<th>CPU</th>
<th>内存</th>
<th>磁盘</th>
<th>操作系统</th>
<th>电源</th>
<th>配置项</th>
</tr>
</thead>
<tbody>
{% for vm in list %}
<tr class="odd gradeX">
<td><a href="/vmserver/vms/{{ vm.id }}/$">{{ vm.list_name }}</a></td>
<td>{{ vm.ip }}</td>
<td>{{ vm.app_name }}</td>
<td>{{ vm.cpu }}</td>
<td>{{ vm.mem }}</td>
<td>{{ vm.total_hard_disk }}</td>
<td>{{ vm.os }}</td>
<td>{{ vm.power_status }}</td>
<td>
'''
由于我的List表中有2000多条数据,通过datatables插件渲染数据的时候,响应非常慢,需要10秒左右前端才能渲染完成,请问有什么优化的方法,能让速度更快。
La pagination doit être effectuée en arrière-plan, car vous avez obtenu tous les
2000
multiples éléments de données en arrière-plan et les avez transmis à la réception. La réception chargera ces2000
multiples éléments de données lors de la génération. la page. Si la pagination est terminée en arrière-plan, chaque Si seule la page actuelle est transmise à la réception, comme50
des éléments de données, la page deviendra naturellement plus rapide lors du rendu.Vous pouvez d'abord essayer ceci pour voir si ce que j'ai dit est juste :
Je n'en ai ajouté qu'un
[:50]
au code ci-dessus. La méthode.all()
obtiendra toujours tous les2000
éléments de données, mais seuls les50
éléments seront transmis au front-end si cela se produit. votre vitesse de rendu front-end plus rapide Oui, cela prouve que la vitesse elle-même n'a rien à voir avecobjects.all()
, elle est uniquement liée à la quantité de données reçues par le front-end.Dans le processus réel, la pagination en arrière-plan est légèrement plus compliquée que cela. Si ma conclusion ci-dessus est correcte, je la mettrai à jour à nouveau...
Ajouter du cache, ajouter un index et ajouter une pagination
Si vous utilisez Django Restframework, vous pouvez utiliser la fonction de pagination fournie nativement par le framework :
Référez-vous : http://www.django-rest-framew...