Я использую фильтр для нокаута для фильтрации элементов. Но если число более 1000 записей, то оно возвращает данные очень медленно. Что я должен сделать для этого? Вот мой методМассивный фильтр очень медленно возвращает данные.
viewModel.filteredData = ko.computed(function() {
var str = "<temp>";
if (viewModel.selection() == "All") return viewModel.dataOne();
return ko.utils.arrayFilter(viewModel.dataOne(), function (data) {
stringFromArray = data.display;
if (stringFromArray.indexOf(str) == 0) {
return true;
}
});
});
Вот мой fiddle
Когда я выбираю опцию «All», то она будет загружать все данные и, если выбрать «Selected», то он будет фильтровать записи. Прямо сейчас у меня нет большого количества записей в моей скрипке, поэтому ее фильтрация довольно быстро. Но в моей реальной жизни у меня есть более 5000 записей, и для отображения всех записей требуется 10 секунд. Я имею в виду, что я загружаю данные из своего сервиса, а данные загружаются и выбирается кнопка «Все». Затем я выбираю кнопку «Выбранные», которая фильтрует запись за 3-5 секунд. Теперь, когда я снова нажимаю кнопку «Все», для перезагрузки данных требуется 10 секунд. Как я могу улучшить скорость.
Я также прочитал о вопросе here, но не смог его понять.
Update1
я решил сделать на стороне сервера подкачки. Может ли кто-нибудь дать мне ссылки на страничный пейджинг на стороне сервера, используя kogrid? Я использую службы WCF для извлечения данных. Нужно ли мне передавать параметр pageize для обслуживания каждый раз при его вызове. Дайте мне знать, если есть пример использования kogrid с wcf-сервисом.
не выглядит так, как будто это фильтр массива. Это рендеринг этого большого объема данных, который будет вашей горлышкой бутылки. У меня есть скрипка с более чем 2600 предметов. Я поставил пару таймеров, чтобы посмотреть, сколько времени это займет. Фильтр массива занимает всего 2 мс, а «Все» даже не попадет в ваш arraFilter, даже если он занимает менее 1 мс. Оказание этого объема данных, безусловно, замедлит работу. Введите данные, установите предел (скажем, 10 за раз и посмотрите, как обстоят дела). –
@sujesharukil должен ли я делать подкачку на стороне клиента или на стороне сервера? – Happy
будет более выгодным, так как это действительно большой кусок данных, которые вы сбрасываете, что дорого. –