Эта статья нуждается в редакционном обзоре. Как вы можете помочь.
Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод add()
интерфейса Cache
принимает в качестве параметра URL, загружает его и добавляет полученный объект ответа в заданный кеш. Метод add()
функционально эквивалентен соедующему коду:
fetch(url).then(function (response) { if (!response.ok) { throw new TypeError('bad response status'); } return cache.put(url, response); })
Для более сложных операций, вы должны будете воспользоваться Cache.put()
.
Замечание: add()
перезапишет любую пару ключ/значение, сохраненную ранее в кеше, соответствующем запросу.
Замечание: Исходная реализация Cache (как в Blink, так и в Gecko) разрешает промисы Cache.add
, Cache.addAll
, и Cache.put
когда тело ответа полностью записано в хранилище. БОлее поздние версии спецификаций говорят, что браузер может разрешить промис как только данные сохранены в базе данных, даже если тело ответа все еще формируется.
Замечание: Начиная с Chrome 46, Cache API будут хранить лишь запросы из безопасных источников, то есть только запросы, получаемые по HTTPS.
Синтаксис
cache.add(request).then(function() { //запрос был добавлен в кеш });
Параметры
- request
- Запрос, который вы хотите добавить в кеш. Это может быть объект
Request
, либо URL.
Возвращаемое значение
Promise
, который разрешается с пустым значением void.
Исключения
Исключение | Когда происходит |
---|---|
TypeError |
Схема URL не Статус ответа не из диапазона 200 (т.е., ответ не успешен). Это случается если запрос не выполняется успешно, а также, если запрос является cross-origin no-cors запросом (в таком случае, статус всегда 0). |
Примеры
Этот блок кода ожидает старта события InstallEvent
, а затем запускает waitUntil
для обработки процесса установки приложения. Этот процесс состоит из вызова CacheStorage.open
для создания нового кеша, и использования Cache.add
для добавления ресурсов в этот кеш.
this.addEventListener('install', function(event) { event.waitUntil( caches.open('v1').then(function(cache) { return cache.add('/sw-test/index.html'); }) ); });
Спецификации
Спецификация | Статус | Комменатрий |
---|---|---|
Service Workers Определение 'Cache' в этой спецификации. |
Рабочий черновик | Initial definition. |
Совместимость с браузерами
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Базовая поддержка | 46.0 | (Да)[1] | Нет | 24 | Нет |
Требует HTTPS | 46.0 | (Да)[1] | ? | ? | ? |
TypeError в случае неуспешного запроса |
(Да) | 47.0 (47.0)[1] | (Да) | (Да) | (Да) |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Базовая поддержка | Нет | Нет | (Да) | ? | Нет | ? | Нет | 46.0 |
Требует HTTPS | Нет | Нет | (Да) | ? | ? | ? | ? | 46.0 |
TypeError в случае неуспешного запроса |
(Да) | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |
[1] Сервис воркеры (и Push) были отключены в Firefox 45 Extended Support Release (ESR.)