После задания схемы листов для вашего картографического сервиса он тут же начинает использовать этот кэш. Любое приложение ArcGIS, которое может отображать картографический сервис или сервис изображений, будет использовать кэш, хотя способ получения и использования листов зависит от используемого приложения.
Веб-приложения
Вы можете добавить свой кэшированный картографический сервис или сервис изображений для его использования в качестве базовой карты или рабочего слоя на вашей веб-карте.
Чтобы подключить кэшированный картографический сервис к вашей веб-карте, вы можете использовать объект слоя полистного картографического сервиса ArcGIS.
Чтобы подключить кэшированный сервис изображений к вашей веб-карте, вы можете использовать объект слоя полистного сервиса изображений ArcGIS.
Листы извлекаются из директории кэша с использованием REST-вызовов к картографическому сервису с использованием следующего запроса листа карты: https://<map service URL>/tile/<level>/<row>/<column>.
Проблемы и их решения для веб-приложений
Если ваша карта отображается медленнее, чем нужно, просмотрите URL изображений карты, чтобы проверить, получает ли приложение листы кэша.
Чтобы убедиться, что ваше приложение получает кэшированные листы, выполните следующие действия:
- Откройте инструменты веб-разработчика в браузере.
- Щелкните вкладку Сеть в своей консоли.
- Масштабируйте и перемещайте веб-карту.
Если вы видите в своей консоли URL-адреса, отформатированные аналогично приведенному ниже, значит, ваше приложение успешно использует кэшированные листы из запросов REST.
https://gisserver.domain.com:6443/arcgis/rest/services/myService/MapServer/tile/10/1723/3495.jpg
Если вы видите URL-адреса другого формата, например, exportMap или exportImage, то ваше приложение не использует кэш.
ArcGIS Pro
Чтобы добавить кэшированные картографические сервисы в ArcGIS Pro, обратитесь к разделу Добавление слоев на карту или сцену в ArcGIS Pro.
При запросе листа, масштаб которого в точности совпадает с уровнем масштаба в кэше для данной проекции, картографический сервис напрямую возвращает этот лист. Однако часто запросы не совсем соответствуют масштабу или проекции кэша. В этих ситуациях будет запрашиваться лист из следующего ближайшего уровня масштаба и пересчитывается для соответствия запрошенному масштабу. Пересчет выполняется быстрее динамического создания листа, однако получаемое в результате изображение отличается от исходного листа.
Примечание:
Кэшированные подписи на карте могут с трудом читаться в определенных масштабах вследствие процесса пересчета.
Рекомендуется просматривать карту в масштабах, близких к масштабам, в которых был создан тайник, чтобы быть уверенным в ее читаемости.
ArcGIS Pro кэширует содержимое картографического сервиса карт и сервиса изображений локально, чтобы повысить производительность слоев карт и изображений для сеанса. Обратитесь к разделу Настройка опций кэширования, чтобы получить дополнительные сведения о том, как работает кэширование в ArcGIS Pro.
Кэшированные данные также доступны в виде набора растровых данных в ArcGIS Pro. Хотя к кэшу, доступному в виде растров, нельзя выполнить запрос, можно просматривать листы даже при отключении от сервера, поскольку они не ссылаются на картографический сервис.
Разрешить клиентам кэшировать листы локально
При отображении кэшированных картографических сервисов или сервисов изображений вы можете разрешить клиентам ArcGIS хранить листы локально, предотвращая необходимость их повторного получения, когда пользователь возвращается к уже просмотренной области.
Примечание:
Пользователям может понадобиться очистить свои локальные кэши, прежде чем они смогут увидеть обновления, внесенные вами в кэш.
Если вы часто обновляете свой кеш, вы можете отключить для клиентов возможность локального кэширования листов. Это позволит быть уверенными в том, что у пользователей будет самая актуальная информация, а не более старая, которая может храниться в их локальном кеше.
Когда локальное кэширование включено, пользователи могут выбирать, будут ли они хранить кэш листов локально. Пользователи могут выбрать постоянное построение локального кэша, построение нового локального кэша для каждого сеанса приложения или отказ от построения локального кэша.
Задание свойства cacheControlMaxAge
При отправке клиентами запросов к ArcGIS Server для отображения картографического сервиса ответ с сервера обычно кэшируется браузером и используется в течение определенного периода времени. Это помогает добиться максимально возможной производительности отображения для вашего контента. Однако в зависимости от того, как картографический сервис или сервис изображений и связанные с ним данные будут использоваться в приложении, вы можете настроить продолжительность времени, в течение которого браузер будет использовать ответ в своем кэше.
При повторе запроса, когда максимальное время действия кэша еще не прошло, браузер использует кэшированный ответ, не отправляя запрос к серверу. Если максимальное время действия кэша уже превышено, браузер должен отправить на сервер запрос и присвоить ответу в кэше заголовок IF-NONE-MATCH с соответствующим значением ETag. ArcGIS Server оценивает запрос и использует значение ETag, чтобы определить, изменился ли ответ. Если ответ сервера отличается от копии в браузере, сервер отправит браузеру новый ответ. Если ответ сервера идентичен копии в браузере, сервер сообщает браузеру, что можно продолжать использовать ответ в кэше.
Для кэшированных картографических сервисов, которые не разрешают клиентам локальное кэширование листов, по умолчанию используется значение 0. Это означает, что браузер всегда будет повторно отправлять запрос, который ArcGIS Server будет обрабатывать запрос и отправлять ответ при изменении содержания. Это значение по умолчанию подходит для большинства приложений.
Для кэшированных картографических сервисов, которые разрешают клиентам локальное кэширование листов, по умолчанию используется значение 86400 секунд (1 день). При этом значении по умолчанию, в случае, если запрос повторяется в течение 1 дня, браузер будет использовать ответ, хранящийся в его локальном кеше. Если ваш кэшированный картографический сервис не обновляется часто, рекомендуется увеличить значение свойства cacheControlMaxAge до 30 дней (2 592 000 секунд) или больше, чтобы минимизировать сетевой трафик.
Чтобы добавить свойство cacheControlMaxAge к вашему сервису и отредактировать его значение по умолчанию, сделайте следующее:
- В веб-браузере откройте ArcGIS Server Administrator Directory и войдите с правами администратора.
Адрес URL в формате http://gisserver.domain.com:6443/arcgis/admin.
- Щелкните сервисы и в списке Сервисы выберите картографический сервис, который вы хотели бы изменить.
Если сервис в списке не отображается, он может располагаться в директории под корневой папкой.
- Прокрутите вниз страницу Сервис – <service name> (<service type>) и щелкните редактировать.
- В диалоговом окне Свойства сервиса найдите раздел "properties" JSON-представления свойств сервиса.
- Добавьте параметр cacheControlMaxAge в нужный раздел и задайте для него значение (в секундах).
Ниже приведен пример:
"properties": { "cacheControlMaxAge": "300",
- Щелкните Сохранить изменения.
- Убедитесь, что свойство cacheControlMaxAge и выбранное вами значение отображаются в разделе Свойства.
Использование файлового хранилища с высокой доступностью
Чтобы создать локальный кэш сайта ГИС-сервера, можно выбрать директорию на сервере с высокой доступностью, который использует технологию Storage Area Network (SAN), или отказоустойчивое устройство Network Attached Storage (NAS). Обычно этим занимается техническая IT-служба.
Если в вашей организации имеется SAN или NAS с достаточным местом для хранения кэша, это будет наиболее простым и эффективным решением, чтобы сделать кэш карт и изображений отказоустойчивым.
Если у вас нет доступа к такому файл-серверу, вы можете создать директории кэша на каждом компьютере в развертывании, как описано в следующем разделе.
Для систем с высокой доступностью вы можете сделать резервную копию папок, где хранится кэш, в облачных хранилищах. Имейте в виду, что конечные пользователи кэшированного картографического сервиса или сервиса изображений могут столкнуться с задержкой в отображении тайлов, которые хранятся в облаке, по сравнению с теми, которые хранятся на локальном диске. Кроме того, кэш в облаке должен храниться только в формате v2.
Настройка кэша с высокой доступностью
Хранение нескольких копий кэша карт и изображений на всех компьютерах сайта позволяет сделать кэш и сервис отказоустойчивыми. Создайте папки на каждом компьютере сайта ГИС-сервера и скопируйте весь кэш в каждую из этих папок. Все компьютеры, входящие в сайт ГИС-сервера, должны обладать доступом к каждой из директорий кэша.
При настройке локальных директорий кэша, имейте в виде следующее:
- Вы не можете использовать кэширование карт по запросу с сервисами, настроенными на работу с локальными директориями кэша.
- Инструменты геообработки, которые обновляют имеющийся кэш, записывают данные в общую директорию кэша сайта. Если вы запускаете эти инструменты, вы должны переместить кэш в локальные директории на каждом компьютере, входящем в ГИС-сервер.
Хотя это требует больше административных действий на каждом компьютере сайта ГИС-сервера, это единственная возможность при создании отказоустойчивого ГИС-сервера в облаке.
Также можно использовать это решение при локальных развертываниях. Это рекомендуется, если у вас нет отказоустойчивого файл-сервера, и кэш обновляется нечасто (или никогда).
По умолчанию кэш карт и изображений записывается в одну директорию сайта сервера. Выполните следующие шаги, чтобы настроить папки кэша на каждом компьютере, входящем в сайт ГИС-сервера:
- Откройте конечную точку сервиса ArcGIS директории кэша сервера. URL-адрес имеет формат http://gisserver.domain.com:6080/arcgis/admin/system/directories.
- Выберите кэш сайта.
- Выберите Редактировать.
- Задайте для параметра Использовать локальную директорию значение TRUE.
- Укажите путь к директории локального кэша. Директории кэша должны располагаться в одном и том же месте на каждом компьютере.
После настройки, ArcGIS Server создаст кэш сервисов карт и изображений, опубликованных на данном компьютере, в указанной локальной папке.
- Вручную скопируйте имеющиеся данные кэша из директории кэша сайта в каждую из локальных директорий.
Убедитесь, что построение кэша закончено, прежде чем копировать его.
Вы можете использовать команду robocopy для перемещения кэша, например
robocopy <location of existing cache> <local cache directory> /s