Я пытаюсь улучшить производительность времени загрузки для этой таблицы данных. Пока он загружает чуть более 700 записей, и это уже очень медленно. Я правильно использую deferRender в этом случае? Кажется, это ничего не меняет и не улучшает. Я думаю, что это может быть функция loadJSON, препятствующая этому.
$(document).ready( function () {
$('#log_table').dataTable( {
"deferRender": true,
"dom": '<"top"f>rt<"bottom"lp><"clear">',
"fnCreatedRow": function( nRow, aData, iDataIndex ) {
},
"aoColumnDefs": [
{
"targets": [ 0 ],
"visible": false,
"searchable": false
}
]
} );
} );
function loadJSON(data){
console.log(data);
var t = $('#log_table').DataTable();
t.clear();
var json = $.parseJSON(data);
$.each(json, function(key,value) {
t.row.add( [
value.uuid,
value.date,
value.username,
value.loggedTable,
value.action_performed,
value.queryString
] ).draw();
});
}
$("#audit_trail_menu").click(function(){
$.ajax({
url: './inc/AuditTrailScripts.php?argument=loadAllRecords',
success: function(data) {
loadJSON(data);
}
})
});
PHP
if(!empty($_GET["argument"])){
/*
* loadAllRecords
* Fetch all records to load into the datatable
* table to fetch from - media
*/
if ($_GET['argument']=='loadAllRecords'){
$json= fetchAll();
echo json_encode($json);
}
};
Возможно, вы пишете серверный скрипт, который возвращает json только с частью данных. Он может отображать следующий пакет данных после взаимодействия с пользователем, например. щелкнув далее на Datatable, делегируя правильное событие.
Для этого вы можете отправить параметр в скрипт PHP, например номер пакета.
Других решений пока нет …