// Значение аргумента выбирается произвольно, но оно должно совпадать
// со значением, переданным методу save
memory.load("UserDataStorage”); // Загрузить сохраненные данные
this.getltem = function(key) { // Загрузить значения атрибутов
return memory.getAttribute(key) || null;
};
this.setltem = function(key, value) {
memory.setAttribute(key,value); // Сохранить значения как атрибуты
memory.save("UserDataStorage"); // Сохранять после любых изменений
};
this.removeltem = function(key) {
memory.removeAttribute(key); // Удалить сохраненные значения
memory.save("UserDataStorage"); // Сохранить новое состояние
};
}
Поскольку программный код из примера 20.3 будет работать только в IE, можно воспользоваться условными комментариями IE, чтобы предотвратить его загрузку в броузерах, отличных от IE:
<!—[if IЕ]>
<script src="UserDataStorage.js"></script>
<![endif]-->
20.4. Хранилище приложений и автономные веб-приложения
Стандарт HTML5 определяет новую особенность «кэш приложений» (application cache), которая может использоваться веб-приложениями для сохранения самих себя локально в броузере пользователя. Объекты
localStorage
и
sessionStorage
позволяют сохранять данные веб-приложений, тогда как кэш приложений позволяет сохранять сами приложения - все файлы (HTML, CSS, JavaScript, изображения и т. д.), необходимые для работы приложения. Кэш приложений отличается от обычного кэша веб-броузера: он не очищается, когда пользователь очищает обычный кэш. И кэшированные приложения не очищаются по признаку LRU (least-recently used - давно не используемые), как это может происходить в обычном кэше фиксированного размера. Приложения сохраняются
в кэше не временно: они устанавливаются и могут оставаться в нем, пока не удалят себя сами или не будут удалены пользователем. В действительности, кэш приложений вообще не является кэшем - для него больше подошло бы название «хранилище приложений» (application storage).
Основная причина необходимости установки веб-приложений локально заключается в обеспечении их доступности при работе в автономном режиме (например, в самолете или когда сотовый телефон находится вне доступа к сети). Веб-приложения, способные работать автономно, устанавливают себя в кэш приложений, используют
localStorage
для сохранения своих данных и реализуют механизм синхронизации для передачи сохраненных данных при подключении к сети. Пример автономного веб-приложения мы увидим в разделе 20.4.3, но сначала нам необходимо узнать, как приложение может установить себя в кэш приложений.
20.4.1. Объявление кэшируемого приложения
Чтобы установить приложение в кэш приложений, необходимо создать файл объявления: файл, перечисляющий URL всех ресурсов, необходимых приложению. Затем нужно просто добавить ссылку на файл объявления в основную HTML-страницу приложения, определив атрибут
manifest
в теге
<html>
:
<!DOCTYPE HTML>
<html manifest="myapp.appcache">
<head>...</head>
<body>...</body>
</html>
Файлы объявлений должны начинаться со строки «CACHE MANIFEST». В следующих строках должны перечисляться URL-адреса кэшируемых ресурсов. Относительные URL-адреса откладываются относительно URL-адреса файла объявления. Пустые строки игнорируются. Строки, начинающиеся с символа #, являются комментариями и также игнорируются. Перед комментариями могут быть пробелы, но они не могут следовать в строке за какими-либо непробельными символами. Ниже приводится пример простого файла объявления:
CACHE MANIFEST
# Строка выше определяет тип файла. Данная строка является комментарием
# Следующие строки определяют ресурсы, необходимые для работы приложения
myapp.html
myapp.js
myapp.css
images/background.png
Этот файл объявления служит признаком приложения, устанавливаемого в кэш. Если веб-приложение содержит более одной веб-страницы (более одного HTML-файла, которые могут быть открыты пользователем), в каждой из этих страниц должен быть определен атрибут
<html manifest=>
, ссылающийся на файл объявления. Факт наличия во всех страницах ссылок на один и тот же файл объявления недвусмысленно говорит о том, что все они должны кэшироваться вместе как части одного и того же веб-приложения. Если в приложении имеется всего несколько HTML-страниц, их обычно перечисляют непосредственно в файле объявления. Однако это совершенно необязательно: все файлы, ссылающиеся на файл объявления, будут считаться частью веб-приложения и вместе с ним будут установлены в кэш.