【问题标题】:Is it possible to speed up this Ajax JSON call for use with datatables?是否可以加快此 Ajax JSON 调用以用于数据表?
【发布时间】:2020-06-19 14:16:34
【问题描述】:

我的网站是https://usedlens.co.uk/

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


【解决方案1】:

我切换到服务器端处理

https://datatables.net/examples/server_side/

所以我只通过了当前视图中的记录 (10/25/50/100) 而不是全部 50,000。

这不是我第一次尝试,但这次我修复了代码中导致运行缓慢的错误。

如果实施得当,效果会很好。

【讨论】:

  • 你应该写下你所做的总结,以便下一个人可以受益。
  • 扩展了解决方案并提供了指向数据表实施指南的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 2017-09-23
  • 2010-09-13
  • 1970-01-01
  • 2018-11-25
  • 2013-04-17
相关资源
最近更新 更多