Как приложения получают доступ к кэшу сервиса изображений и используют его
Кэшированный сервис изображений может выполнять функции статического или динамического сервиса изображений. Как правило, благодаря полистной структуре и статическому характеру кэшированный сервис изображений работает быстрее, чем некэшированный (или сервис, доступ к которому осуществляется как к динамическому). При доступе к кэшированному сервису изображений он по умолчанию ведет себя как статический, и вам предоставляется ограниченный доступ к свойствам сервиса. Это означает, что вы не можете изменять метод мозаики или сжатие передаваемых данных.
Любое веб-приложение, которое может отображать сервис изображений, будет использовать кэш, хотя способ получения и использования листов зависит от используемого приложения.
ArcMap
При отображении кэшированного сервиса изображений в ArcMap, его функциональность будет ограничена. Например, вы не сможете изменить метод мозаики или метод сжатия передачи. Но вы все равно сможете изменить настройки условных знаков, идентифицировать пикселы, производить запросы к данным и загружать исходные данные.
Если вам нужно работать с сервисом изображений динамически и использовать функции, такие как метод мозаики, вы можете изменить режим работы слоя. Чтобы изменить режим, щелкните правой кнопкой слой сервиса изображений и снимите отметку Включить режим просмотра кэша (Enable Cache View Mode). Чтобы использовать сервис изображений как кэшированный сервис, снова активируйте эту опцию.
Веб-приложения
При разработке с использованием веб-интерфейсов ArcGIS API for JavaScript, ArcGIS API for Flex и ArcGIS API for Silverlight вам нужно использовать класс ArcGISTiledMapServiceLayer для подключения к кэшированному сервису изображений. При использовании кэшированного сервиса изображений листы будут получены из директории кэша с помощью REST-запросов к сервису изображений. Запрос листа осуществляется в форме http://<URL сервиса изображений>/tile/<level>/<row>/<column>.
Если URL-адрес выглядит соответствующим образом, приложение успешно получает листы с использованием REST-запросов:
http://gisserver.domain.com:6080/arcgis/rest/services/myService/ImageServer/tile/10/1723/3495
Если отображается какой-либо иной формат URL для сервиса изображений, приложение получает листы менее эффективным способом или кэш не используется.
При просмотре отдельного кэшированного сервиса в любом веб-приложении и приближении к области, листов для которой еще не существует, приложение не отображает динамическое изображение; пользователь вообще не увидит какого-либо изображения.
Если сервис изображений отображается медленнее, чем нужно, изучите URL сервиса изображений, чтобы проверить, получает ли приложение листы. Для этого можно открыть приложение в Mozilla Firefox 4 и щелкнуть Firefox > Web Developer > Web Console. При отображении консоли нажмите кнопку Net, а затем производите масштабирование или переместитесь по карте.
Убедитесь, что кэшируемый источник данных находится в той же проекции, что и другие данные, используемые в веб-приложении. Если это не так, вы можете не увидеть данные, так как большинство веб-приложений не могут перепроецировать данные. Кроме того, убедитесь, что схема листов кэшированного сервиса изображений совпадает со схемой других кэшированных слоев в веб-приложении. В противном случае не все слои будут видны.
Повышение скорости отображения кэшированного сервиса изображений
Когда клиенты отправляют запросы к ArcGIS Server для отображения сервиса изображений, ответ сервера обычно кэшируется браузером и повторно используется в течение некоторого периода времени. Это помогает ArcGIS Server добиться максимально возможной скорости отображения сервиса изображений. Однако в зависимости от использования сервиса и связанных с ним данных в приложении, может потребоваться изменить время использования кэшированного ответа. Это можно сделать с помощью добавления свойства cacheControlMaxAge к JavaScript Object Notation (JSON) сервиса.
Как используется свойство cacheControlMaxAge
Ответы сервиса изображений ArcGIS Server содержат тег объекта (ETag) и заголовок Cache-Control. Значение ETag является уникальным идентификатором ответа. Заголовок Cache-Control имеет значение максимальной длительности, который сообщает браузеру максимальный период времени в течение которого можно повторно использовать кэш. Это значение управляется свойством cacheControlMaxAge.
При повторе запроса, когда максимальное время действия кэша еще не прошло, браузер будет использовать кэшированный ответ, не отправляя запрос к серверу. Если максимальное время действия кэша уже превышено, браузер должен отправить на сервер запрос и присвоить ответу в кэше заголовок IF-NONE-MATCH с соответствующим значением ETag. ArcGIS Server оценивает запрос и использует значение ETag для определения изменения запроса. Если ответ сервера отличается от копии в браузере, сервер отправит браузеру полностью новый ответ. Если ответ сервера идентичен копии в браузере, сервер сообщает браузеру, что можно продолжать использовать ответ в кэше.
Задание значения свойства cacheControlMaxAge
Как администратор ArcGIS Server вы можете задать свойство cacheControlMaxAge, чтобы указать, как долго браузер может использовать кэшированный ответ. Снижая для ArcGIS Server необходимость отправки полного ответа, вы делаете кэш браузера более эффективным, оптимизируете приложения и экономите пропускную способность канала.
Для кэшированных сервисов изображений, которые не разрешают клиентам локально кэшировать листы, по умолчанию используется значение 0. Это означает, что браузер всегда отправляет запрос, а ArcGIS Server обрабатывает его и отправляет браузеру полный ответ, если данные изменились.
Для кэшированных сервисов изображений, которые разрешают клиентам локальное кэширование листов, по умолчанию используется значение 12 часов (43200 секунд). Это означает, что если запрос повторяется в течение 12 часов, браузер будет использовать ответ из кэша. Это значение подходит для большинства приложений.
Для кэшированных сервисов изображений, карты или данные которых меняются редко, рекомендуется увеличить значение по умолчанию до 30 дней (2592000 секунд) или более, чтобы сократить сетевой трафик.
Чтобы добавить свойство cacheControlMaxAge к сервису и задать для него значение по умолчанию, сделайте следующее:
- В веб-браузере откройте директорию ArcGIS Server Administrator и войдите под именем пользователя с правами администратора. Адрес URL в формате http://gisserver.domain.com:6080/arcgis/admin.
- Щелкните services и выберите сервис изображений, который вы хотите изменить, в списке Сервисы (Services). Если сервис не отображается в списке, он может располагаться в папке в Корневой папке (Root folder).
- Прокрутите вниз страницу Service – <service name> (<service type>) и щелкните редактировать (edit).
- В диалоговом окне Свойства сервиса (Service Properties) найдите раздел "properties" сервиса JSON.
- Добавьте свойство cacheControlMaxAge в раздел и задайте для него значение (в секундах), например:
"properties": { "cacheControlMaxAge": "2592000",
- Щелкните Сохранить изменения (Save Edits).
- На странице Service – <service name> (<service type>) проверьте, что свойство cacheControlMaxAge и указанное для него значение отображаются в разделе Свойства (Properties).
Наложение кэша в веб-приложениях
Как было сказано раньше, при разработке кэша сервиса изображений, которые будут накладываться на другие кэшированные сервисы, следует учитывать некоторые важные факторы разработки кэша. Для веб-приложений, которые будут созданы с использованием интерфейсов ArcGIS API for JavaScript, ArcGIS API for Flex и ArcGIS API for Silverlight, необходимо, чтобы при наложении кэша совпадали системы координат и размеры листов. Рекомендуется также сопоставлять как можно больше масштабов. Самый простой способ сделать это – сопоставление схем листов для обоих наборов кэша и создание листов только для тех масштабов, которые являются приемлемыми для каждого кэша. Так можно обеспечить сопоставление системы координат и размера листов и распознание программным обеспечением того факта, что два набора кэша используют общие масштабы.
Рекомендуется использовать схему листов ArcGIS Online/Google Maps/Bing Maps.
OGC WMTS
Стандарт Web Map Tile Service (WMTS), разработанный организацией Open Geospatial Consortium, Inc. (OGC), является открытой спецификацией для публикации в сети цифровых карт с использованием кэшированных листов изображений. При создании в ArcGIS Server кэшированного картографического сервиса или сервиса изображений, этот сервис и его листы автоматически становятся доступны по стандарту WMTS.
URL-адрес для подключения к кэшированному сервису изображений с использованием протокола WMTS использует следующую схему:
http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer/WMTS