как извлечь colmodel и данные по одному запросу и ускорить загрузку jqgrid - PullRequest
0 голосов
/ 18 марта 2012

jqGrid работает на удаленных данных json в приложении ASP .NET MVC2.При загрузке страницы на сервер отправляются два запроса: один для получения всей html-страницы с помощью colmodel и второй вызов jqgrid для получения данных.

colmodel хранится в базе данных и зависит от прав пользователя и конфигурации пользователя.Для создания colmodel требуется количество вызовов sql-сервера, что занимает некоторое время.

Оба запроса требуют построения colmodel на сервере.Для извлечения данных colmodel требуется получить правильное количество столбцов для построения оператора select.

В настоящее время эта colmodel создается два раза для каждого запроса.Также требуется возвращать общее количество повторов, что очень медленно для больших данных (приводит к полному сканированию результатов на сервере PostgreSql).

Как ускорить процесс?Как собрать colmodel только один раз и отправить его и данные в одном запросе?

1 Ответ

1 голос
/ 18 марта 2012

Я согласен, что расширение jqGrid для поддержки загрузки некоторых частей colModel за one Ajax будет очень полезным.Примерно год я отправлял запрос функции , например.

Что вы можете сделать сейчас:

  1. Если я правильно понимаю ваши требования, вам нужно показатьпользователь подмножество столбцов зависит от прав пользователя.Можно реализовать требование в одном запросе Ajax.Что вы можете сделать: сначала не отправляйте «скрытые» данные или отправляйте их в виде пустой строки.За секунды вы можете отправить клиенту список столбцов, которые должны быть скрыты.В этом случае вы можете реализовать переменное количество столбцов в jqGrid.Например, вы можете отправить информацию внутри userData части ответа JSON.Чтобы добиться большей производительности со многими скрытыми столбцами, я бы рекомендовал вам вызывать showCol или hideCol внутри beforeProcessing и скрывать / показывать столбцы в пустой сетке .Это значительно увеличит производительность showCol или hideCol.При необходимости вы можете включить дополнительный вызов clearGridData.
  2. . Вы должны оптимизировать поиск colModel.Я не понимаю, почему это должно быть медленным.Все зависит от вашей реализации.В любом случае, я уверен, что можно сделать поиск очень быстро.
  3. Для повышения производительности запроса данных из базы данных вы можете рассмотреть не заполняйте records поле ответа JSONи установите total на page + 1 .Он нажимает кнопку «Далее» на пейджере.Вы должны установить total равным page, только если вы возвращаете меньше строк как rows (количество строк на странице).В большинстве случаев это будет хорошим критерием для определения последней страницы.Вы также можете скрыть некоторые поля в озере пейджеров с помощью кнопки «Последний» и диапазона sp_1_..., который показывает общее количество страниц.Вы можете сделать это, используя опцию pgtext : "Page {0}" или pginput: false, чтобы вообще не вводить пейджер.viewrecords должно быть false (значение по умолчанию).После всех настроек вам не нужно рассчитывать общее количество записей и тем самым улучшать производительность запроса к базе данных в случае больших данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...