【发布时间】:2020-06-19 14:16:34
【问题描述】:
Google 开发工具 - 您可以看到它调用的 XHR 标头详细信息 https://usedlens.co.uk/data.cfc?method=getData
- 在生产环境中,加载 3.6MB 大约需要 12 秒
- 在开发过程中,加载 22.9MB 需要
开发和生产数据量大致相同,代码相同。
我尝试过使用服务器端处理,它加载数据的速度更快 3-4 秒,但分页/搜索/排序都具有相同的 3-4 秒响应时间。所以我坚持使用 ajax 选项。
我的数据表初始化
var resultsTable = $('#resultsTable').DataTable(
{
'serverSide': false,
'deferRender': true,
'ajax': {
'url': 'data.cfc?method=getData'
},
'columns': [
{ 'data': 'productname' },
{ 'data': 'price' },
{ 'data': 'retailersite' }
],
'columnDefs': [
{ "targets": [1,2], "searchable": false },
{ "width":"10%","targets": [1]},
{ "width":"20%","targets": [2]}
]
}
);
我用 JSON 文本文件替换了我的 CFC 源,它仍然需要 8-11 秒。
我还能做些什么来加快速度吗?
【问题讨论】:
-
奇怪的是,延迟都在数据库端。当数据库需要时间返回数据时,CF 只能做这么多。由于两种环境中的数据大小相对相同,这些表的索引效果如何?他们最后一次被重新索引是什么时候?分页应该是更好的方法,但这取决于查询和索引的执行情况。您使用的是哪个数据库?
-
我正在使用 mysql,我只是在产品表中添加了一个 id 作为主键 - 该表每天清除一次,并且我之前没有添加过 id,因为自动递增 id 不久就会变得荒谬。
-
主持人从头试了一下,用了4秒。也许我应该为英国主机支付更多费用!
-
我将数据转换为包含 JSON 的文本文件,生产需要 8-11 秒,开发需要 144 毫秒。所以至少我可以排除数据库或cfc代码的任何延迟问题。
标签: jquery ajax performance datatables coldfusion