【问题标题】:Datatables: Browser freezes after ajax has been load数据表:加载 ajax 后浏览器冻结
【发布时间】:2020-01-25 00:05:19
【问题描述】:

问题:加载并显示 Ajax 数据后浏览器死机

我在使用 Datatables 时遇到性能问题,我使用 ajax/服务器端处理,但遇到了一些非常严重的性能问题。

超过一定数量的已加载行 (50+) 行出现在表中,但 2-3 秒后,浏览器选项卡会根据行数冻结几秒钟(没有可点击,没有工具提示..) . 1000+ 行会导致永久冻结,必须关闭选项卡并重新加载页面。

过去有人经历过这种行为吗?就像处理了行一样,在一切准备就绪后,浏览器突然冻结了几秒钟。

后端: Debian 10 Laravel 5.8 (+yajra/laravel-datatables)

浏览器: Chrome 77(当前 Firefox 版本中也存在问题)

我的数据表配置:

    var table = $('#tblCashflow').DataTable({
    processing: false,
    serverSide: true,
    searching: true,
    bfilter: false,
    paging: true,
    bLengthChange: false, //dropdown show x entries
    info: true,
    searchDelay: 3000,
    ajax: {
        url:$('#routeCashflowTable').val(),
        method:'post'
    },
    columns: [
        { data: 'client_name',  name: 'client_name',   orderable: false,   searchable: true   },
        { data: 'study_name',   name: 'study_name',    orderable: false,   searchable: false  },
        { data: 'product_name', name: 'product_name',  orderable: false,   searchable: true   },
        { data: 'body_area',    name: 'body_area',     orderable: false,   searchable: false  },
        { data: 'date_time',    name: 'date_time',     orderable: false,   searchable: false  },
        { data: 'price',        name: 'price',         orderable: false,   searchable: false  },
        { data: 'client_id',    name: 'client_id',     orderable: false,   searchable: true, visible: false   },
    ],

    "language": {
        "url": "/custom/datatables/dataTables.german.lang"
    },

});

【问题讨论】:

    标签: javascript jquery ajax laravel datatables


    【解决方案1】:

    我打赌一些 javascript 处理。在浏览器中打开分析器并观察消耗 CPU 的内容。一遍又一遍地重新计算可能是“微不足道的”计算值…… Profiler 会告诉你。

    【讨论】:

      【解决方案2】:

      这是 Laravel-Debugbar 的存储行为导致冻结。 可以在以下情况下禁用存储

      config/debugbar.php

          'storage' => [
          **'enabled'    => true,**
          'driver'     => 'file', 
          'path'       => storage_path('debugbar'), 
          'connection' => null,   
          'provider'   => '' 
      ],
      

      将“启用”设置为 false,性能问题就会消失,但如果显示的值对于 http 标头而言太长,则控制台中可能会出现错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-29
        • 2017-06-21
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 2016-04-17
        相关资源
        最近更新 更多