Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

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-страниц, их обычно перечисляют непосредственно в файле объявления. Однако это совершенно необязательно: все файлы, ссылающиеся на файл объявления, будут считаться частью веб-приложения и вместе с ним будут установлены в кэш.

Простой файл объявления, подобный тому, что показан выше, должен перечислять все ресурсы, необходимые веб-приложению. После загрузки веб-приложения в первый раз и установки его в кэш при последующих обращениях к нему оно будет загружаться из кэша. Когда приложение загружается из кэша, все необходимые ему ресурсы должны быть перечислены в файле объявления. Ресурсы, которые не были перечислены, не загружаются. Эта политика имитирует работу в автономном режиме. Если простое кэшированное приложение сможет запускаться из кэша, оно точно так же сможет запускаться, когда броузер работает в автономном режиме. Более сложные веб-приложения в общем случае не могут кэшировать каждый необходимый им ресурс отдельно. Но они тем не менее могут использовать кэш приложений, если они имеют более сложные объявления.

МІМЕ-тип объявления кэшируемого приложения

По соглашению файлам объявлений кэшируемых приложений даются имена с расширением .appcache. Однако это всего лишь соглашение, а для фактической идентификации типа файла веб-сервер должен отправлять файл объявления с MIME-типом «text/cache-manifest». Если при отправке файла объявления сервер установит в заголовке «Content-Type» любой другой МІМЕ-тип, приложение не будет установлено в кэш. Вам может потребоваться специально настроить свой веб-сервер на использование нужного MIME-типа, например, создав в Apache файл Maccess в каталоге веб-приложения.

Поделиться:
Популярные книги

Демон Власти

Ильин Михаил Ильич
Документальная литература:
публицистика
6.25
рейтинг книги
Демон Власти

Ограбить Императора

Сухов Евгений Евгеньевич
Детективы:
исторические детективы
7.00
рейтинг книги
Ограбить Императора

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
8.00
рейтинг книги
Солнечный корт

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Рекламная деятельность газет и журналов

Назайкин Александр
Деловая литература:
маркетинг, pr, реклама
5.00
рейтинг книги
Рекламная деятельность газет и журналов

Один день

Николс Дэвид
Проза:
современная проза
7.00
рейтинг книги
Один день

Осознание. Пятый пояс

Игнатов Михаил Павлович
14. Путь
Фантастика:
героическая фантастика
5.00
рейтинг книги
Осознание. Пятый пояс

Неучтенный элемент. Том 12

NikL
12. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 12

"Фантастика 2025-76". Компиляция. Книги 1-35

Стоев Андрей
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Фантастика 2025-76. Компиляция. Книги 1-35

Пламенев. Книга 13

Карелин Сергей Витальевич
13. Пламенев
Фантастика:
аниме
уся
сказочная фантастика
фэнтези
фантастика: прочее
5.00
рейтинг книги
Пламенев. Книга 13

Курс 1. Сентябрь

Фокс Гарри
1. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Сентябрь

Личность и Абсолют

Лосев Алексей Федорович
Научно-образовательная:
философия
6.25
рейтинг книги
Личность и Абсолют

Чужак

Листратов Валерий
1. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.25
рейтинг книги
Чужак