jqGrid замедляет работу Google Map - PullRequest
0 голосов
/ 03 марта 2011

Я создаю приложение ASP.Net MVC 2, используя jqGrid 3.8.2 (компонент сетки javascript), чтобы представить некоторые данные, которые я сохранил в БД.На моей странице также есть карта Google с мозаичным наложением.

Я заметил значительно худшую производительность во время загрузки карты и наложения листов в этом приложении, чем в других приложениях, которые не используют jqGrid.Было бы естественно с замедлением, если бы и jqgrid, и карта запрашивали данные одновременно, но когда я масштабирую / панорамирую карту, сервер не выполняет запросы к сетке.

После выполненияПосле некоторой отладки в моем коде (добавление / удаление функциональности по крупицам) я свел его к следующему: если я настрою свой jqgrid для использования « datatype: local », это вернет производительность обратно на карту!

Как только я установил "datatype: json" и " url: [myAspNetMvcController] " загрузка плиток карты получает большой успех.

Мой вопрос: кто-нибудь знает, почему это происходит?Кажется, что jqGrid постоянно работает в фоновом режиме, хотя его не просили получить какие-либо новые данные.У меня есть точки останова на сервере, поэтому я знаю, что он не запускает запросы.На мой взгляд, это должна быть какая-то «магия» jqgrid, которая заставляет другие компоненты javascript на странице работать медленно и, следовательно, вызывает задержку запросов.

Для меня очень важно добраться дов конце, и я действительно не хочу отказываться от jqGrid, так как я действительно люблю его.

Буду благодарен за все отзывы, которые могут направить меня в правильном направлении!

1 Ответ

0 голосов
/ 07 марта 2011

Нашел ответ, и оказалось, что не jqgrid был плохим парнем, а хранилище сессий на стороне сервера!Я использовал Session в качестве кеша для данных сетки, потому что я нуждался в отфильтрованных данных для других целей, кроме сетки, и хотел избежать избыточных обращений к БД.Как только я что-то записал в объект Session, сервер принял удар и начал обрабатывать все входящие запросы медленнее (часто на несколько секунд!).Позже я узнал, что использование объекта Session для кэширования в большинстве случаев не рекомендуется, но я до сих пор не знаю, почему это может вызвать неприятные побочные эффекты, подобные этому.Если бы кто-то просветил меня, это было бы здорово!Это не может быть проблемой использования большого количества оперативной памяти на сервере, потому что производительность падает из-за записи

Session["test"] = "test";

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...