先看代码
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秒左右前端才能渲染完成,请问有什么优化的方法,能让速度更快。
Paging harus dilengkapkan di latar belakang, kerana anda telah memperoleh semua
2000
berbilang keping data di latar belakang dan menyerahkannya ke meja depan akan memuatkan2000
berbilang keping data ini apabila menjana halaman. Jika halaman dilengkapkan di latar belakang, setiap Jika hanya halaman semasa dihantar ke meja depan, seperti50
kepingan data, halaman itu secara semula jadi akan menjadi lebih pantas apabila dipaparkan.Anda boleh mencuba ini dahulu untuk melihat sama ada apa yang saya katakan betul:
Saya hanya menambah satu
[:50]
pada kod di atas Kaedah.all()
masih akan mendapat semua2000
kepingan data, tetapi hanya bahagian50
akan dihantar ke bahagian hadapan kelajuan pemaparan bahagian hadapan anda lebih cepat Ya, itu membuktikan bahawa kelajuan itu sendiri tiada kaitan denganobjects.all()
, ia hanya berkaitan dengan jumlah data yang diterima oleh bahagian hadapan.Dalam proses sebenar, paging latar belakang adalah lebih rumit sedikit daripada ini Jika kesimpulan saya di atas ok, saya akan mengemas kini semula...
Tambah cache, tambah indeks dan tambah paging
Jika anda menggunakan Django Restframework, anda boleh menggunakan fungsi paging yang disediakan secara asli oleh rangka kerja:
Rujuk: http://www.django-rest-framew...