This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Cache

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨апрель 2018 г.⁩.

Интерфейс Cache представляет собой механизм хранения пары объектов Request / Response, которые кешируются, например, как часть жизненного цикла ServiceWorker. Заметьте, что интерфейс Cache доступен как в области видимости окна, так и в области видимости воркеров. Не обязательно использовать его вместе с сервис воркерами, даже если интерфейс определён в их спецификации.

Для вызывающего скрипта может быть множество именованных объектов Cache. Разработчик сам определяет реализацию того, как скрипт (например, в ServiceWorker) управляет обновлением Cache. Записи в Cache не будут обновлены, пока не будет выполнен явный запрос; их время жизни не истечёт до момента удаления. Используйте CacheStorage.open(cacheName), чтобы открыть определённый именованный объект Cache и затем вызывайте любые методы Cache для управления его состоянием.

Вы также ответственны за периодическую очистку записей кеша. Каждый браузер имеет жёсткие ограничения на объем хранилища кеша, доступный для исходного кода. Браузер делает все, чтобы как можно лучше использовать дисковое пространство, но он может удалить хранилище кеша для скрипта. В основном, браузер либо удаляет все данные из кеша для скрипта, либо не удаляет ничего. Устанавливайте версии кеша в имени и используйте кеш только той версии, которая безопасна для использования. Смотрите Удаление старого кеша.

Примечание: Алгоритм сопоставления ключей зависит от заголовка VARY хранимого значения. Таким образом, сопоставление нового ключа требует одновременно как проверки самого ключа, так и значений для записей в Cache.

Примечание: Кеширующие API не учитывают заголовки кеширования HTTP.

Методы

Cache.match(request, options)

Возвращает Promise, который успешно завершается с нахождением первого совпадения для данного запроса в объекте Cache.

Cache.matchAll(request, options)

Возвращает Promise, который успешно завершается и возвращает массив всех найденных совпадений для данного запроса в объекте Cache.

Cache.add(request)

Принимает в качестве параметра URL, получает данные по нему и добавляет полученный объект ответа в заданный кеш. Функциональный эквивалент вызову fetch() с последующим вызовом Cache.put() для добавления результата в кеш.

Cache.addAll(requests)

Принимает массив URL в качестве параметра, получает данные по ним, добавляет полученные объекты ответов в заданный кеш.

Cache.put(request, response)

Принимает запрос и ответ на него и добавляет их в заданный кеш.

Cache.delete(request, options)

Находит запись Cache, чей ключ является запросом, и, в случае нахождения, удаляет запись Cache и возвращает Promise, успешно завершающийся со значением true. Если же запись Cache не найдена, возвращается false.

Cache.keys(request, options)

Возвращает Promise, который отдаёт массив ключей Cache.

Примеры

Этот пример кода из примера выборочного кеширования сервис воркера. (смотрите работа выборочного кеширования). В коде используется CacheStorage.open(cacheName) для открытия любых объектов Cache с заголовком Content-Type, начинающимся с font/.

Далее используется