Файл manifest

Автор: Евгений Рыжков и Татьяна Головко Дата публикации: 04.04.2011

Работа оффлайнового веб приложения основывается на сохраненном файле manifest. Как я уже упоминал, файл manifest — это список ресурсов, которые необходимы приложению, чтобы работать автономно. Чтобы запустить процесс загрузки этих ресурсов нужно указать на месторасположение файла-списка необходимых файлов. Для этого предназначен атрибут manifest элемента <html>:

<!DOCTYPE HTML>
<html manifest="/cache.manifest">
<body>
...
</body>
</html>

Сохранить файл minfest можно где угодно на веб сервере, но файл должен быть передан с content-type text/cache-manifest. Если используется сервер Apache, можно просто добавить следующие директивы в файл .htaccess, который расположен в корневой директории:

AddType text/cache-manifest .manifest

Имя файла manifest должно заканчиваться .manifest. Если используется другая конфигурация Apache, следует проконсультироваться у службы техподдержки, как настроить нужный content-type.

В: Мое веб приложение состоит из нескольких страниц. Следует ли указывать путь к manifest на каждой странице?

О: Каждая страница веб приложения должна указывать на этот файл.

Итак, все страницы приложения ссылаются на файл manifest, сервер отдает его с правильным Content-type, но что же происходит в самом файле manifest? Тут становится интересней.

Первая строка любого manifest файла выглядит так:

CACHE MANIFEST

Далее идет список загружаемых файлов. Этот список может быть разделен на три части: явный (explicit) раздел, резервный (fallback) и онлайновый белый список. Каждый раздел имеет свой заголовок. Если в файле manifest отсутствуют заголовки, все перечисленные ресурсы относятся к явному разделу. Зациклиться на терминологии не стоит, дабы мозг не вскипел.

Пример реального manifest файла — список из трех файлов: CSS, Javascript и jpeg.

CACHE MANIFEST
/clock.css
/clock.js
/clock-face.jpg

В данном файле отсутствуют заголовки, поэтому все ресурсы относятся к явному разделу. Файлы из этого раздела будут загружены, а затем сохранены локально и, в то время пока отсутствует подключение к сети, будут использоваться вместо своих онлайновых аналогов. Таким образом, вышеприведенный manifest сообщит браузеру, что следует загрузить clock.css, clock.js и clock-face.jpg из корневой директории сервера и сохранить локально. После их загрузки, можно отсоединиться от сети и обновить страницу — теперь она будет работать автономно.

В: нужно ли мне перечислять HTML страницы в файле manifest?

О: И да, и нет. Если все веб приложение содержится в одной странице, следует просто убедиться, что у нее имеется атрибут manifest. В этом случае при отключении сети, эта страница будет доступна оффлайн. Если же приложение состоит из нескольких HTML страниц, то их следует перечислять в файле manifest, иначе браузер не будет знать об их существовании и не сохранит их локально.

Куда дальше