плагин datatables с xpages, поместите json в viewcope или sessioncope вместо URL? - PullRequest
0 голосов
/ 04 ноября 2019

Я использую плагин datatables в своем приложении, но из-за его успеха количество записей резко увеличивается (1000 новых записей в неделю), поэтому мое представление о таблицах данных увеличивается во времени ответа.

В настоящее время я звонюслужба отдыха, настроенная с помощью элемента управления rest на xpage, который подключен к классу java для заполнения массива json из viewnavigator.

Я не могу отключить URL-адрес в вызове ajax при запуске компонента datatablesиз того, что я понял. В качестве альтернативы, я думаю поместить json в view- или sessioncope и загрузить его с помощью элемента управления «scriptblock», но я не уверен, смогу ли я добиться здесь производительности (возможно, с помощью кнопки для обновления переменной области видимости).

каков ваш опыт / предложения?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Вы пробовали опцию серверной стороны в таблицах данных? Я поиграл с ним некоторое время назад без плагина (я вручную добавил файлы js и написал библиотеку ssjs для обработки запросов ajax).

Эта опция позволяет вам обрабатывать пейджинговую часть сервера и ограничиваетданные отправляются клиенту на данные текущей страницы. Он добавляет некоторые параметры к вызову ajax, который вы можете обработать в коде (агенте), который возвращает данные. Недостатком является то, что обработка сортировки, фильтрации и т. Д. Должна выполняться также на стороне сервера (если вы не отключите эти параметры)

Более подробную информацию можно найти здесь: https://datatables.net/manual/server-side

I 'Я не уверен, как использовать его с контролем покоя, но он отлично работает с ajax-вызовом агента (lotusscript).

0 голосов
/ 04 ноября 2019

Мое первое предложение, основанное на моем опыте, - это избегать загрузки многих тысяч записей, если это возможно. В браузере очень сложно воспроизвести ощущения Notes-клиента, и в большинстве случаев в этом нет необходимости, за исключением редких случаев. Предложите пользователям найти нужную им информацию, выполнив поиск, или классифицируйте представления в серверной части и предоставьте пользователям возможность выбора категории из раскрывающегося списка или чего-то подобного.

Но если вам абсолютно необходимо загрузить много данных, есть несколько разных направлений, по которым вы можете идти ...

  1. Большая часть времени загрузки дляDataTables - это фактическое отображение строк и столбцов таблицы в зависимости от того, какой тип логики у вас есть для rowCallback и т. Д. Подумайте об использовании плагина скроллера, который будет отображать только видимые строки. При прокрутке таблицы будут отображаться дополнительные строки. Это значительно ускоряет время рендеринга для больших таблиц.

  2. Если вы загружаете большой объем данных, например, 1000 строк, вы можете разделить запросы данных так, чтобы пользователи получали начальныйданные загружаются (например, 300-500 строк) быстро, а остальные данные загружаются асинхронно за сценой. Загрузите исходные данные через параметры ajax как обычно, а затем получите остальное в обратном вызове initComplete.

  3. Другой вариант - изначально загрузить данные через ajax и сохранить их в localStorage или сеансе Storage. а затем укажите ваш параметр DataTables «данные» на ваши локальные данные. Это не обязательно обеспечивает улучшение производительности, но отвечает на ваш вопрос об «отключении» параметра ajax.
    Например:



    var ajaxOptions = {
        type: 'GET',
        "url": *your rest url*,
        contentType: 'application/json',
        dataType: 'json',
        cache: false
    }
    $.ajax(ajaxOptions)                     
        .fail(function() {
            console.log("AJAX FAIL")
        })
        .then(function(resp){
           localStorage.setItem('dtdata', JSON.stringify(resp));
         })
         .done(function() {
            // initialize DataTable
             $("#myTable").DataTable( {
                "data": JSON.parse(localStorage.getItem('dtdata')),
                "columns": o.columns
                // other DataTable parameters
             })
        });

Любая комбинация № 3 и 1 или 2.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...