Table Pipeline
Расширение для конвейера данных Bootstrap Table, предоставляет кэширование клиентских данных для запросов на стороне сервера, оптимизирует производительность пагинации.
Это расширение предоставляет функциональность кэширования клиентских данных для запросов пагинации на стороне сервера, тем самым избегая отправки новых запросов на сервер при каждом переключении страницы. Оно предоставляет компромиссное решение для производительности при обработке больших объёмов данных, находясь между следующими двумя крайними ситуациями:
- Пагинация на стороне клиента: все данные возвращаются на клиент за один раз
- Пагинация на стороне сервера: данные снова получаются с сервера при каждом переключении страницы
Добавлены две основные опции:
usePipeline: включить функцию кэширования конвейера данныхpipelineSize: установить размер каждого окна кэша
Описание окна кэша
Размер окна кэша должен быть полностью делим на текущее количество записей на странице; плагин автоматически настроит его вверх до ближайшего делимого значения. Например:
- Если размер конвейера установлен в 4990, а на странице отображается 25 записей, он будет динамически настроен на 5000
Окно кэша автоматически вычисляется на основе pipelineSize и общего количества строк, возвращённых сервером. Например, если размер кэша равен 500, а общее количество строк — 1300, будут созданы следующие окна кэша:
[
{
"lower": 0,
"upper": 499
},
{
"lower": 500,
"upper": 999
},
{
"lower": 1000,
"upper": 1499
}
]
Требования к серверу
Интерфейс сервера должен поддерживать возврат данных указанного диапазона в соответствии с параметрами limit (то есть pipelineSize) и offset, а также возвращать общее количество строк. Поэтому серверу необходимо использовать offset и limit для сборки данных ответа.
Механизм использования кэша
При переключении страниц проверяется, находится ли новый offset в текущем окне кэша:
- Если находится в окне, возвращаются локальные данные кэша
- В противном случае запрашиваются новые данные окна кэша с сервера
Условия недействительности кэша
Следующие ситуации делают текущий кэш недействительным и вызывают новый запрос на сервер:
- Операция сортировки
- Операция поиска
- Изменение количества записей на странице
- Переключение страницы в новое окно кэша
Новые события
cached-data-hit.bs.table: срабатывает при попадании в локальный кэш данных при переключении страницыcached-data-reset.bs.table: срабатывает при недействительности кэша и необходимости отправки нового запроса на сервер
Использование
<script src="extensions/pipeline/bootstrap-table-pipeline.js"></script>
Примеры
Опции
pipelineSize
-
Атрибут:
data-pipeline-size -
Тип:
Number -
Описание:
Размер каждого окна кэша, должен быть больше 0.
-
Значение по умолчанию:
1000
usePipeline
-
Атрибут:
data-use-pipeline -
Тип:
Boolean -
Описание:
При установке в
trueвключает кэширование конвейера. -
Значение по умолчанию:
false
События
onCachedDataHit (cached-data-hit.bs.table)
-
Параметры:
undefined -
Описание:
Срабатывает при попадании в локальный кэш данных при переключении страницы.
onCachedDataReset (cached-data-reset.bs.table)
-
Параметры:
undefined -
Описание:
Срабатывает при необходимости сброса локального кэша (например, при сортировке, поиске, изменении размера страницы или переключении страницы за пределы текущего окна кэша).