При работе с Tile-сервером кэширование – это сохранение на жестком диске полученных с сервера растровых изображений с целью их дальнейшего многократного использования без повторных обращений к серверу.
Примечание | |
---|---|
Для слоя OpenStreetMap кэширование не производится. |
Если кэш содержит достаточное количество данных для работы, пользователь может работать с этими данными offline, не загружая глобальную сеть.
Изображения, сохраняемые на диске, должны быть организованы определенным образом.
Текущая версия ZuluGIS и ZuluServer для организации кэшируемых файлов использует файловую структуру кэша программы SAS.Планета.
<Корневая папка>\z[Z+1]\[X/1024]\x[X]\[Y/1024]\[Y].<EXT>
Следует отметить, что, независимо от системы отсчета плиток в исходной тайловой-системе, в кэш плитки складываются всегда в системе координат Lat0 = 90, Lon0 = -180, ось X – на восток, ось Y – на юг. Для записи в кэш нового файла, его исходные параметры X, Y, Z сначала преобразуются в новые параметры X, Y, Z для кэша. При совпадении систем координат тайлового слоя и кэша параметры X, Y, Z не изменятся.
Корневая папка
Местоположение корневой папки кэша, создаваемого ZuluGIS или ZuluServer на компьютере, определяется следующим образом:
<Папка приложений для всех пользователей>\Zulu\ztc_<Код кэша>\
Папка приложений для всех пользователей – это системная папка для создания приложениями данных для всех пользователей компьютера.
В зависимости от используемой операционной системы, путь папки может быть разным.
Windows XP:
C:\Documents and Settings\All Users\Application Data\
Windows 10:
C:\ProgramData\Zulu\Tiles
Код кэша – числовой код, автоматически формируемый ZuluGIS, как контрольная сумма строки с шаблоном запроса (значение параметра Address в описателе).
Пример:
Address:
http://www.maps-for-free.com/layer/relief/
Папка кэша:
Windows XP:
C:\Documents and Settings\All Users\Application Data\Zulu\ztc_2138735954\
Windows 10:
C:\ProgramData\Zulu\Tiles\ztc_2138735954\
Для плитки Z = 15, X = 19141, Y = 9525 имя файла в формате PNG в Windows 10 сформируется так:
C:\ProgramData\Zulu\Tiles\ztc_2138735954\z16\18\x19141\9\y9525.png
Выбор общей для всего компьютера папки и создание единого кода для разных описателей с одинаковым шаблоном запроса позволяет избежать дублирования кэша для одних и тех же данных.
Примечание | |
---|---|
Корневая папка для кэширования тайловых данных, отличная от папки по умолчанию, может быть задана через меню . |
Варианты кэширования
Возможны несколько вариантов использования механизма кэширования.
Первый вариант. Описатель слоя расположен на том же компьютере, и в шаблоне запроса указана связь с данными по протоколу HTTP.
Address: http://<шаблон запроса>
В этом случае запросы на получение плиток идут непосредственно к указанному в шаблоне серверу. Полученные плитки складываются в кэш на этом компьютере.
При этом, если в организации несколько компьютеров обращаются к одному и тому же ресурсу глобальной сети, на каждой машине будет создаваться свой кэш, а общая нагрузка на глобальную сеть возрастет пропорционально количеству пользователей.
Второй вариант. Описатель тайлового слоя можно разместить на компьютере, где установлен ZuluServer, и опубликовать данный слой как слой ZuluServer, создав соответствующий описатель.
Например, если в область данных сервера поместить описатель sample.zww, то для его публикации на сервере достаточно создать в той же папке текстовый описатель sample.zl с одной строкой:
Path: sample.zww
В этом случае клиенты ZuluServer будут обращаться за данными не прямо к серверу тайловых данных, а к тайловому слою, опубликованному на ZuluServer (например, Zulu://zs_host:6473/sample.zl).
При обращении клиента к ZuluServer за плиткой, ZuluServer проверит, нет ли такого изображения в кэше сервера. Если изображение найдено в кэше сервера, оно будет отправлено клиенту без обращения в глобальную сеть. Если изображение в кэше отсутствует, ZuluServer запросит его из глобальной сети, положит себе в кэш и отправит клиенту.
Таким образом, ZuluServer может выступать как посредник в предоставлении данных тайл-сервера клиенту.
Удобство такого варианта в том, что для всех клиентов ZuluServer кэш будет создаваться в одном месте, на диске сервера, сильно сокращая количество запросов в глобальную сеть и существенно экономя дисковое пространство клиентских машин.
Кроме того, при таком подходе клиентские машины вообще могут не иметь доступа в интернет.
Третий вариант. Кэш располагается на локальном компьютере, но данные для него запрашиваются не из глобальной сети, а от ZuluServer.
Для этого нужно создать на локальной машине описатель с моделью «Тайловый слой ZuluServer» и в шаблоне запроса указать имя тайлового слоя на сервере:
Method: ZS Address: Zulu://zs_host:6473/sample.zl
В этом случае для получения изображения клиент проверяет, нет ли его в локальном кэше. Если нет, клиент обращается за изображением на ZuluServer. ZuluServer проверяет, нет ли изображения в его кэше.
Если нет, ZuluServer обращается за изображением в глобальную сеть, получает изображение, сохраняет его в своем кэше и отправляет клиенту.
Клиент, получив изображение от ZuluServer, кладет изображение в свой кэш.
При таком комбинированном варианте клиент нагружает ZuluServer только по необходимости, а ZuluServer только по необходимости загружает глобальную сеть.