datatable处理大数据耗时太久了

1500条数据左右平均需要七八秒

 $.ajax({
        url: NodejsUrls + "data/query",
        type: "post",
        data: {
            req: str
        },
        success: function(data, textStatus) {
            var data_arr = data.data;
            if (tabTable1 != null) {
                tabTable1.fnDestroy();
                tabTable1.fnDraw();
            }
            tabTable1 = $("#tab1").dataTable({
                "data": data.data,
                "bDestroy": true,
                "bPaginage": "true",
                "iDisplayLength": 10,
                "serverSide": true,
                "bRetrieve": true,
                "bAutoWidth": false,
              //"ajax": {
              //    "url": NodejsUrls + "data/query",  找的延迟加载好像用的不对
              //    "deferRender": true
              //},
                paging: true,
                "sPaginationType": "full_numbers",
                "dom": 'f<"toolbar1"><"divScroll1" t><"redirectPage1"><"tabFootbar1" ip><"clear">', //下拉框,创建的div ,table,信息,分页条               
                'aoColumnDefs': [{
                    'data': 'record_time',
                    'sTitle': '时间',
                    "aTargets": [0],
                    "sClass": "text-center",
                    "render": function(data, type, full) {
                        return new Date(data*1000).format("yyyy-MM-dd hh:mm:ss");
                    },
                    'sDefaultContent': ''
                }, {
                    'data': 'up_rxnb',
                    'sTitle': '上行帧数量',
                    "aTargets": [1],
                    "sClass": "text-center",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_sumload',
                    'sTitle': '上行帧总长',
                    "aTargets": [2],
                    "sClass": "text-center",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_rssi',
                    'sTitle': '上行RSSI',
                    "aTargets": [3],
                    "sClass": "text-center",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_snr',
                    'sTitle': '上行SNR',
                    "aTargets": [4],
                    "sClass": "text-center",
                    'sDefaultContent': ''
                }, {
                    'data': 'down_txnb',
                    'sTitle': '下行帧数量',
                    "aTargets": [5],
                    "sClass": "text-center",
                    'sDefaultContent': ''
                }, {
                    'data': 'down_sumload',
                    'sTitle': '下行帧总长',
                    "aTargets": [6],
                    "sClass": "text-center",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_sfnb',
                    'sTitle': 'up_sfnb',
                    "aTargets": [7],
                    "sClass": "hidden",           
                    'sDefaultContent': ''
                }, {
                    'data': 'up_snrnb',
                    'sTitle': 'up_snrnb',
                    "aTargets": [8],
                    "sClass": "hidden",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_rssinb',
                    'sTitle': 'up_rssinb',
                    "aTargets": [9],
                    "sClass": "hidden",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_chnonb',
                    'sTitle': 'up_chnonb',
                    "aTargets": [10],
                    "sClass": "hidden",
                    'sDefaultContent': ''
                }, {
                    'data': 'up_loadnb',
                    'sTitle': 'up_loadnb',
                    "aTargets": [11],
                    "sClass": "hidden", 
                    'sDefaultContent': ''
                }, {
                    'data': 'up_toa',
                    'sTitle': 'up_toa',
                    "aTargets": [12],
                    "sClass": "hidden",                    
                    'sDefaultContent': ''
                }, {
                    'data': 'down_sfnb',
                    'sTitle': 'down_sfnb',
                    "aTargets": [13],
                    "sClass": "hidden",                    
                    'sDefaultContent': ''
                }, {
                    'data': 'down_chnonb',
                    'sTitle': 'down_chnonb',
                    "aTargets": [14],
                    "sClass": "hidden",                    
                    'sDefaultContent': ''
                }, {
                    'data': 'down_loadnb',
                    'sTitle': 'down_loadnb',
                    "aTargets": [15],
                    "sClass": "hidden",                    
                    'sDefaultContent': ''
                }, {
                    'data': 'down_toa',
                    'sTitle': 'down_toa',
                    "aTargets": [16],
                    "sClass": "hidden",                    
                    'sDefaultContent': ''
                }],
                "oLanguage": { //多语言配置
                    "sLengthMenu": "每页显示 _MENU_ 条记录",
                    "sZeroRecords": "对不起,查询不到任何相关数据",
                    "sEmptyTable": "查询不到任何相关数据",
                    "sInfo": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录",
                    "sInfoEmtpy": "找不到相关数据",
                    "sInfoFiltered": "(数据表中共为 _MAX_ 条记录)",
                    "sProcessing": "正在加载中...",
                    "sSearch": "过滤",
                    "sUrl": "", //多语言配置文件,可将oLanguage的设置放在一个txt文件中,例:Javascript/datatable/dtCH.txt
                    "oPaginate": {
                        "sFirst": "首页",
                        "sPrevious": "<",
                        "sNext": ">",
                        "sLast": "尾页 "
                    }
                }
            });

好慢啊 慢死了

阅读 5.5k
2 个回答

你应该在服务端分页,而不是在客户端分页

首先POST请求会发起两次TCP发包,通信过程一般会慢一点,
另外,如果数据量很大,不建议使用<table>布局,table会等到全部数据组装好以后才会显示,可以使用<div>模拟table

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题