Объект ApplicationCache.

  Технология AppCache позволяет кэшировать (сохранять) такие ресурсы HTML-документа как изображения, библиотеки сценариев, таблицы стилей и т.п., то есть любые связанные с HTML-документом файлы. При первой загрузке HTML-документа эти файлы сохраняются браузером в специальном кэше на устройстве пользователя, и, в дальнейшем, могут быть загружены из этого кэша а не из сети. То есть используя технологию AppCache можно создавать автономные Web-приложения и(или) повысить скорость обработки Web-страниц за счет сокращения числа запросов на сервер.
  Не надо путать технологию AppCache со стандартным кэшем браузера. Отличия между этими кэшированиями следующие:
  1. В стандартном кэше данные могут быть автоматически удалены при его заполнении или истечения срока действия, который указан в заголовках соответствующих файлов. Данные кэша AppCache могут быть удалены только по инициативе пользователя или сервера.
  2. В стандартный кэш попадают только файлы, загруженные в процессе просмотра страницы. Помещением файлов в кэш AppCache управляет разработчик.
  Для управления кэшированием ресурсов HTML-документа по технологии AppCache в соответствующем документе необходимо использовать атрибут MANIFEST тега HTML, задав ссылку на, так называемый, файл манифеста кэширования. Файл манифеста - это текстовый файл, в котором используются специальные ключевые слова задающие параметры кэширования. Этот файл может называться как угодно, но обычно его расширение задают как .manifest

  Ключевые слова и код манифеста:
  1. CACHE MANIFEST - Обязательная первая строка манифеста.
  2. CACHE: - Строка манифеста, которая начинает раздел с перечислением файлов для кэширования. Каждый файл задаётся в этом разделе своим интернет-адресом в новой строке манифеста после ключевого слова CACHE:.
  3. FALLBACK: - Строка манифеста, которая начинает раздел с перечислением пар файлов соответствия.
      Первый файл пары указывает на ресурс, который не был кэширован (не включен в раздел CACHE:), и задаётся в этом разделе своим интернет-адресом.
      Второй файл пары, через пробел после первого, должен указывать на кэшированный ресурс (включеный в раздел CACHE:).
      Второй файл заменит первый в HTML-документе, если доступ к первому файлу недоступен по какой-либо причине (например, при отсутствии сетевого соединения).
      Каждая пара перечисляется в новой строке манифеста после ключевого слова FALLBACK:.
      Ссылаться на первый файл в паре можно с использованием паттернов.
  4. NETWORK: - Строка манифеста начинающая раздел с перечислением файлов, которые обязательно должны быть загружены из сети (при наличии соединения) или из стандартного кэша браузера.
      Каждый файл задаётся в этом разделе своим интернет-адресом в новой строке манифеста после ключевого слова NETWORK:.
      В разделе NETWORK: ссылаться на файлы можно с использованием паттернов.
  5. # - Начинает строку комментария в манифесте. Комментарий заканчивается переводом строки.
  Ссылки на файлы в разделах манифеста указываются относительно расположения файла манифеста.
  Соответствие кэша для offline-режима в первую очередь определяется разделом CACHE:. Соответствия, которые установлены разделами FALLBACK: и NETWORK: отрабатываются всегда после раздела CACHE:.
  В offline-режиме все файлы, не указанные в разделах FALLBACK: и NETWORK:, и не сохранённые в кэше AppCache, не будут загружены, даже если их копии есть в стандартном кэше браузера.
  Пример манифеста:

    CACHE MANIFEST
    CACHE:
    ../style/main.css
    content/pauk.jpg
    FALLBACK:
    ../style/main.css main.css
    NETWORK:
    *


  Все разделы манифеста могут повторяться и следовать в манифесте вперемежку. Ключевое слово CACHE: можно опускать.
  При использовании технологии AppCache необходимо иметь в виду несколько моментов:
  • Изменение кэшируемых ресурсов на сервере не приводит к их автоматическому изменению в кэше. При этом, если кэш уже создан, то, даже при изменении файла манифеста, первоначальная загрузка соответствующего HTML-документа происходит с использованием этого (то есть устаревшего) кэша. Поэтому разработчик должен как-то предусмотреть удаление кэша в таких ситуациях.
  • Необходимо следить за логикой совместного использования разделов CACHE:, FALLBACK: и NETWORK: в файле манифеста. В противном случае можно сильно запутать структуру манифеста, что приведёт к потере производительности или вообще к неработоспособности кэшируемого HTML-документа.
  • Размер кэша ограничен и зависит от браузера и его настроек.
  • Для кодировки файла манифеста с кириллическими символами лучше использовать кодировку utf-8.
  ApplicationCache
  ApplicationCache - Является интерфейсом для управления обновлением кэшированных ресурсов HTML-документа.
  Экземпляр доступен:

  1. Через свойство applicationCache объекта Window
  2. Через свойство applicationCache объекта Self
  Свойства.
  oncached - Содержит функцию, которая должна быть вызвана, когда HTML-документ в первый раз кэширован в соответствии с файлом манифеста.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.oncached[ = Функция]

Значения формата записи:

  onchecking - Содержит функцию, которая должна быть вызвана, когда браузер обнаружил ссылку на файл манифеста и отправил запрос на его получение.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.onchecking[ = Функция]

Значения формата записи:

  ondownloading - Содержит функцию, которая должна быть вызвана, когда браузер начал формирование кэша получив файл манифеста.
  Формирование кэша происходит в фоновом режиме.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.ondownloading[ = Функция]

Значения формата записи:

  onerror - Содержит функцию, которая должна быть вызвана, если при загрузке файла манифеста, или какого-нибудь ресурса произошла ошибка.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.onerror[ = Функция]

Значения формата записи:

  onnoupdate - Содержит функцию, которая должна быть вызвана, если, при обновлении кэшируемого HTML-документа, не был обновлён (например из за того что не изменился) файл манифеста.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.onnoupdate[ = Функция]

Значения формата записи:

  onobsolete - Содержит функцию, которая должна быть вызвана если был вызван метод swapCache, а кэшируемый HTML-документ не перезагружен (то есть используется устаревший кэш).

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.onobsolete[ = Функция]

Значения формата записи:

  onprogress - Содержит функцию, которая должна быть вызвана, когда браузер загрузил очередной ресурс для сохранения в кэше в соответствии с файлом манифеста.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.onprogress[ = Функция]

Значения формата записи:

  onupdateready - Содержит функцию, которая должна быть вызвана, если вызов метода swapCache завершился успешно.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.onupdateready[ = Функция]

Значения формата записи:

  status - Содержит значение описывающее состояние кэша текущего HTML-документа.
  Значение имеет числовой формат.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.status

Значения формата записи:

  • Экземпляр объекта ApplicationCache - Любой операнд значения со значением экземпляра объекта ApplicationCache.
  • . - Оператор доступа к свойству объекта.
  • status - Ключевое слово.
      Ссылается на одно из значений:
    • 0 - HTML-документ не кэшируется.
    • 1 - Нет никаких операций с кэшем в текущий момент.
    • 2 - В текущий момент браузер проверяет файл манифеста.
    • 3 - В текущий момент браузер загружает ресурсы для кэша.
    • 4 - Ресурсы для кэша загружены (можно вызвать метод swapCache для их сохранения в кэше).
    • 5 - В текущий момент кэш устарел (например метод swapCache успешно отработал).
  Методы.
  abort - Прерывает процес обновления кэша.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.abort()

Значения формата записи:

  addEventListener - Устанавливает функцию обработчик событий, связанных с кэшем.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.addEventListener(Событие, Функция, false)

Значения формата записи:

  • Экземпляр объекта ApplicationCache - Любой операнд значения со значением экземпляра объекта ApplicationCache.
  • . - Оператор доступа к методу объекта.
  • addEventListener - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Событие - Имя события, предусмотренного для объекта ApplicationCache, заданное в любом строковом формате.
  • Функция - Любой операнд значения со значением функция.
      Значением первого аргумента этой функции, при ее вызове браузером, всегда является экземпляр объекта Event обрабатываемого события.
      Одна функция-обработчик устанавливается методом только один раз и повторные вызовы метода для этой же функции не имеют значения.
      Однако другие функции могут быть установлены экземпляру объекта ApplicationCache для этого же события, причем выполняться, в случае возникновения события, они будут в том же порядке, как записаны в скрипте.
  • false - Логическое значение.
  • , - Оператор группировки. Ключевое слово в этом формате.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  dispatchEvent - Инициализирует возникновение заданного события, связанного с кэшем.
  Возвращает значение undefined.
  Инициализированное событие не происходит на самом деле, но инициализация приводит к вызову его обработчика.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.dispatchEvent(Событие)

Значения формата записи:

  removeEventListener - Отменяет функцию обработчик событий установленную методом addEventListener.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.removeEventListener(Событие, Функция, false|true)

Значения формата записи:

  swapCache - Начинает процес обновления кэша.
  Возвращает значение undefined.
  Метод swapCache логично вызывать только после загрузки ресурсов для кэша (например после вызова метода update).
  После вызова метода swapCache браузер будет использовать новый кэш. При этом Web-страница не обновляется автоматически, обновление происходит при последующих обращениях к кэшированным ресурсам или при перезагрузке (пользователем или скриптом) кэшируемого HTML-документа.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.swapCache()

Значения формата записи:

  update - Запускает проверку файла манифеста и загрузку указанных ресурсов из сети или стандартного кэша браузера.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта ApplicationCache.update()

Значения формата записи: