先看代码
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秒左右前端才能渲染完成,请问有什么优化的方法,能让速度更快。
分頁應在後台完成,因為你在後台取到了所有
2000
多条数据传给前台,前台在生成页面的时候就要加载这2000
多条数据,如果分页在后台完成,每次只传给前台当前页面的,譬如50
條數據,頁面在渲染的時候自然會變快。你可以先這麼試試,看我說的對不對:
上述程式碼我只加了一個
[:50]
,.all()
方法依然会获取所有2000
条数据,只是传给前端的只有50
条,如果这样一来你的前端渲染速度变快了,那证明速度本身和objects.all()
無關,只跟前端接收的資料量有關。實際過程中,後台分頁比這個稍微複雜些,要是我上面的結論沒問題,我再更新吧…
加緩存,加索引,加分頁
如果你用Django Restframework的話,可以使用框架原生提供的分頁功能:
Refer: http://www.django-rest-framew...