Django 数据表加载时间过长
Django Datatables taking too long to load
我正在尝试将 25600 行加载到数据表中,但大约需要 10 秒。该请求是通过 ajax API 调用。
views.py
@api_view()
def get_all_data(request):
get_all_data_ = Data.objects.values("name","contact_number","email_address","address","age",
"location_type","sector","phase","total_data","total_usage","city","district")
return JsonResponse(list(get_all_data_), safe=False)
template.html
var table = $('#data-table').DataTable({
serverSide: true,
"ajax": {
"url": "/alldata/",
"dataSrc": ""
},
"columns": [
{"data": "name"},
{"data": "contact_number"},
{"data": "email_address"},
{"data": "address"},
{"data": "age"},
{"data": "location_type"},
{"data": "sector"},
{"data": "phase"},
{"data": "total_data"},
{"data": "total_usage"},
{"data": "city"},
{"data": "district"}
],
});
我怎样才能让它瞬间完成?
我会做什么:
- 我会添加分页(正如@Willem Van Onsem 建议的那样)只需加载前 100 个(例如)样本并添加 link 以在 table 上分页(next/previous) .看看 Django Paginator.
- 如果您想显示有关整个数据集的一些信息,我会计算描述数据的统计数据并显示它而不是整个数据。例如平均值或中值 ...
如果你真的想让整个过程变得更快table:
- 您可以尝试使用更快的服务器(也许会有一点帮助),
- 你可以尝试缓存它,也许将数据存储在内存中这样你就不需要为每个请求运行 DB查询(但你需要记住refresh/validate缓存).
我正在尝试将 25600 行加载到数据表中,但大约需要 10 秒。该请求是通过 ajax API 调用。
views.py
@api_view()
def get_all_data(request):
get_all_data_ = Data.objects.values("name","contact_number","email_address","address","age",
"location_type","sector","phase","total_data","total_usage","city","district")
return JsonResponse(list(get_all_data_), safe=False)
template.html
var table = $('#data-table').DataTable({
serverSide: true,
"ajax": {
"url": "/alldata/",
"dataSrc": ""
},
"columns": [
{"data": "name"},
{"data": "contact_number"},
{"data": "email_address"},
{"data": "address"},
{"data": "age"},
{"data": "location_type"},
{"data": "sector"},
{"data": "phase"},
{"data": "total_data"},
{"data": "total_usage"},
{"data": "city"},
{"data": "district"}
],
});
我怎样才能让它瞬间完成?
我会做什么:
- 我会添加分页(正如@Willem Van Onsem 建议的那样)只需加载前 100 个(例如)样本并添加 link 以在 table 上分页(next/previous) .看看 Django Paginator.
- 如果您想显示有关整个数据集的一些信息,我会计算描述数据的统计数据并显示它而不是整个数据。例如平均值或中值 ...
如果你真的想让整个过程变得更快table:
- 您可以尝试使用更快的服务器(也许会有一点帮助),
- 你可以尝试缓存它,也许将数据存储在内存中这样你就不需要为每个请求运行 DB查询(但你需要记住refresh/validate缓存).