Добрый день! На нашем портале http://gis.mycrg.ru/ инструменты масштабирования по рамке работают достаточно быстро, благодаря заранее сформированным тайлам на все слои. Проблема заключается в том, что пользоваться инструментами масштабирования (скрол, +/-) крайне не удобно в отличие от других картографических порталов. А именно: при скролинге, увеличение или уменьшение изображения происходит рывками, крайне медленно и без плавности отрисовки изображения. Задержка выглядит искусственной и не исчезает даже при наличии кэша в браузере. При использовании инструмента (Увеличение или уменьшение изображения) при троекратном клике подряд по инструменту, увеличение или уменьшение изображение происходит только один раз. В сторонних ресурсах включая OpenSource, данные инструменты работают намного удобнее. Например: Генеральный план г.Ялта доступен по ссылке http://yalta.mycrg.ru/viewer/ , веб-приложение выполнено на базе Open Source CMV - The Configurable Map Viewer (https://github.com/cmv) Яндекс-карты (https://yandex.ru/maps) Google-карты (https://www.google.ru/maps) ПКК Росрееср (https://pkk5.rosreestr.ru)
1. Возможно ли устранить задержку самостоятельно? 2. Планируете ли Вы это исправить в следующих версиях?
P.S. Видео работы инструментов на различных ресурсах для сравнения, высылаю на почту panorama@gisinfo.ru с пометкой "Симферополь"
1) В основном проблема заключается в огромном кол-ве запросов посылаемых клиентом на сервер. (Из за того что все слои у вас тайловые). Браузер просто не справляется с кол-вом запросов. Вам необходимо корректно выстроить структуру ваших данных в дереве проектов.
Кол-во запросов необходимо сократить. Для этого часть карт перевести на WMS запросы , а часть на WMTS с размерами тайлов 1024х1024. Например слои содержащие простые примитивы (линии, полигоны и точки без штриховок и заполнений) в WMS (например Функциональные зоны, границы и др.) Слои с более сложными примитивами в WMTS 1024х1024.
Общее правило: Тежелые карты, содержащие заполняющие знаки и штриховки, а также 10 миллионов объектов в слои WMTS 1024х1024. Легкие в WMS.
2) Корректно настроить сервер IIS. А именно порядок формирования очередей запросов. (необходимо выставить опцию при получении нового запроса - формировать отдельный поток) Кол-во потоков и запросов выставить исходя из возможностей вашего сервера. Обязательно должна быть серверная WINDOWS.
Возможно ли узнать параметры вашего сервера для дальнейших рекомендаций?
1) Перевел карту в WMS(1), по сравнению с WMTS(2), запрос отрабатывается намного дольше, при этом масштабирование и перемещение работает также как и на слое с WMTS запросом.
В первом случае на карте присутствует только один WMS слой, во втором случае точно такой же WMTS слой, в котором тайлы сформированы с помощью ImageryCreator 9.3.2 без формирования пустых тайлов.
Владимир Железняков написал: 2) Корректно настроить сервер IIS. А именно порядок формирования очередей запросов. (необходимо выставить опцию при получении нового запроса - формировать отдельный поток) Кол-во потоков и запросов выставить исходя из возможностей вашего сервера. Обязательно должна быть серверная WINDOWS.
Настройка очереди запросов в IIS, обрабатываемых PHP-интерпретатором, настраивается в "Параметры Fast-CGI", свойство "Длина очереди". По умолчанию установлено значение = 1000. Это означает, что к одному процессу php-cgi.exe может одновременно направиться на обработку 1000 запросов. Если число запросов к серверу превысит 1000, то создастся новый процесс php-cgi.exe и так далее.
Уменьшать этот параметр имеет смысл в случае, когда php-скрипт (сервис) обрабатывает запросы, требующие длительного выполнения (оверлейные операции - поиск пересечения объектов и т.п.). Т.к. в этом случае, все остальные 999 запросов из очереди будут ждать завершения обработки текущего запроса. Т.е. из-за длительного поиска будет задержка в отдаче тайлов. Чтобы избежать такой задержки, можно установить длину очереди = 1, тогда на каждый запрос будет создаваться отдельный экземпляр php-cgi.exe. Но в этом случае возрастает нагрузка на сервер.
Какое значение использовать, необходимо решать от типа основных задач, решаемых сервисом. Если основная задача сервиса - отдача тайлов, то имеет смысл оставить значение = 1000. Т.к. эти запросы обрабатываются быстро. Если сервис чаще выполняет длительные запросы, то лучше установить значение = 1.
Аналогичные настройки есть в свойствах пула приложения. Там рекомендуется выставить свойство "Длина очереди" равным 1000, а "Максимальное число рабочих процессов" увеличить до 20.