ExtJS Grid медленный с более чем 3000 записей

Я использую ExtJS Grid, и он работает довольно медленно с более чем 3000 записей. Сортировка занимает около 4 секунд.

Я думаю, может быть, использовать нумерацию страниц в моей таблице. Однако после прочтения документации я все еще немного не уверен, как работает нумерация страниц в extjs. Это извлекает данные с сервера каждый раз, когда вы переворачиваете страницу? Я бы предпочел, чтобы это было не так. Я бы предпочел, чтобы 3000 записей сохранялись в браузере, а затем отображалась только часть этих строк.

Также я использую Extjs версии 4.2.1. Если я перейду на версию 5. получу ли я некоторые улучшения производительности?


person Oliver Watkins    schedule 05.06.2014    source источник
comment
не хочешь объяснить, почему закрытое голосование?   -  person Oliver Watkins    schedule 05.06.2014
comment
Да, разбиение на страницы обрабатывается сервером, поскольку сетка не знает о наборе данных. Таким образом, в зависимости от параметров запуска, ограничения и общего свойства хранилища клиент запрашивает сервер для набора данных. Вы можете использовать локальную разбивку на страницы с локальной сортировкой, если это соответствует вашим требованиям. Чтобы использовать локальную разбивку на страницы можно использовать прокси-сервер pagingmemory. Здесь это docs.sencha.com/extjs/4.2.0/#!/api/   -  person Dev    schedule 05.06.2014


Ответы (2)


Попробуйте использовать плагин буферизованного рендерера, 3000+ записей не так уж и много с плагином.

Фрагмент из документа сенча:

var grid = Ext.create('Ext.grid.Panel', {
    // ...
    autoLoad: true,
    plugins: {
        ptype: 'bufferedrenderer',
        trailingBufferZone: 20,  // Keep 20 rows rendered in the table behind scroll
        leadingBufferZone: 50   // Keep 50 rows rendered in the table ahead of scroll
    },
    // ...
});

Вы можете либо использовать конфигурации конечного/начального буфера для обрезки сетки, либо просто пропустить их из конфигурации. Я никогда не нуждался в обрезке себя

ссылка: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.plugin.BufferedRenderer

person Sven Tore    schedule 05.06.2014
comment
Вы можете увидеть буферизованный рендерер в действии здесь. Там около 1000 записей. - person Saki; 06.06.2014
comment
Спасибо! И спасибо, Саки, у тебя всегда отличный сайт! - person Oliver Watkins; 06.06.2014
comment
Спасибо, Оливер. Вы также можете прокомментировать там, если хотите. - person Saki; 06.06.2014

Вы можете хранить свои данные в LocalStorage. Это позволяет хранить данные в браузере. Вам понадобится модель данных, которую вы заполняете данными из XML и сохраняете в браузере. В следующий раз вы просто проверите, сохранены ли данные, и загрузите их, если нет. Ext Grid будет хорошо работать с этими данными.

Меня устраивает.

person Kavan Fatehi    schedule 28.05.2019