--- title: Cache.addAll() slug: Web/API/Cache/addAll translation_of: Web/API/Cache/addAll ---

{{APIRef("Service Workers API")}}{{SeeCompatTable}}

Описание

Метод addAll() интерфейса {{domxref("Cache")}} принимает массив URLS в качестве параметра, получает данные по ним, и добавляет полученные объекты ответов в заданный кеш. Объекты запросов, созданные в ходе получения данных, становятся ключами для хранимых ответов. 

ЗамечаниеaddAll() перезапишет любые пары ключ/значение ранее записанные в кеш, соответствующие запросу, но выдаст ошибку, если операция put() перезапишет один из кешей, созданный за время выполнения одного и того же метода addAll().

Замечание: Первоначальная реализация Cache (как в Blink, так и в Gecko) разрешает промисы {{domxref("Cache.add")}}, {{domxref("Cache.addAll")}}, и {{domxref("Cache.put")}} когда тело ответа полностью записано в хранилище. Более поздние версии спецификации говорят, что браузер может разрешить промис как только данные были записаны в базу данных, даже если тело ответа ещё формируется.

Замечание: Начиная с Chrome 46, Cache API будет хранить запросы только из безопасных источников, то есть, только использующие протокол HTTPS.

Синтаксис

cache.addAll(requests[]).then(function() {
  //запросы были добавлены в кеш
});

Параметры

requests
Массив объектов {{domxref("Request")}}, которые вы хотите добавить в кеш.

Возвращаемое значение

{{jsxref("Promise")}}, которые разрешается с пустым значением void.

Исключения

Исключение Когда происходит
TypeError

Схема URL не http или https.

Статус ответа не из диапазона 200 (т.е., ответ не успешен). Это случается если запрос не выполняется успешно, а также, если запрос является cross-origin no-cors запросом (в таком случае, статус всегда 0).

Примеры

Этот блок кода ожидает старта события {{domxref("InstallEvent")}}, а затем запускает {{domxref("ExtendableEvent.waitUntil","waitUntil")}} для обработки процесса установки приложения. Этот процесс состоит из вызова {{domxref("CacheStorage.open")}} для создания нового кеша, и вызова addAll() для добавления набора ресурсов в этот кеш.

this.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open('v1').then(function(cache) {
      return cache.addAll([
        '/sw-test/',
        '/sw-test/index.html',
        '/sw-test/style.css',
        '/sw-test/app.js',
        '/sw-test/image-list.js',
        '/sw-test/star-wars-logo.jpg',
        '/sw-test/gallery/',
        '/sw-test/gallery/bountyHunters.jpg',
        '/sw-test/gallery/myLittleVader.jpg',
        '/sw-test/gallery/snowTroopers.jpg'
      ]);
    })
  );
});

Спецификации

Спецификация Статус Комментарий
{{SpecName('Service Workers', '#cache', 'Cache')}} {{Spec2('Service Workers')}} Initial definition.

Совместимость с браузерами

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Базовая поддержка {{CompatChrome(46.0)}} {{CompatVersionUnknown}}[1] {{CompatNo}} 24 {{CompatNo}}
Требует HTTPS {{CompatChrome(46.0)}} {{CompatVersionUnknown}}[1] {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
TypeError в случае неуспешного запроса {{CompatVersionUnknown}} {{CompatGeckoDesktop(47.0)}}[1] {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Базовая поддержка {{CompatNo}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatNo}} {{CompatUnknown}} {{CompatNo}} {{CompatChrome(46.0)}}
Требует HTTPS {{CompatNo}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatChrome(46.0)}}
TypeError в случае неуспешного запроса {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}

[1] Сервис воркеры (и Push) были отключены в Firefox 45 Extended Support Release (ESR.)

Смотрите также