Кэширование данных Tile-сервера

При работе с Tile-сервером кэширование – это сохранение на жестком диске полученных с сервера растровых изображений с целью их дальнейшего многократного использования без повторных обращений к серверу.

[Примечание]Примечание

Для слоя OpenStreetMap кэширование не производится.

Если кэш содержит достаточное количество данных для работы, пользователь может работать с этими данными off-line, не загружая глобальную сеть.

Изображения, сохраняемые на диске, должны быть определенным образом организованы.

Текущая версия 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/

Папка кэша:

WindowsXP

C:\Documents and Settings\All Users\Application Data\Zulu\ztc_2138735954\

Windows 710

C:\ProgramData\Zulu\Tiles\ztc_2138735954\

Для плитки Z = 15, X = 19141, Y = 9525 имя файла в формате PNG в Windows 7 сформируется так:

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 только по необходимости загружает глобальную сеть.