Сбой при удалении кэша работника службы

#javascript #service-worker #angular-service-worker

#javascript #service-worker #angular-service-worker

Вопрос:

Я добавил следующий (примерный) код в свое приложение (приложение Angular, верно для любого приложения JS), чтобы удалить кэш serviceworker:

 if ('serviceWorker' in navigator) {
    if ('caches' in window) {
        caches.keys().then((keyList) => {
            return Promise.all(keyList.map(function (key) {
                return caches.delete(key);
            }));
        });
    }
}
  

Но я часто получаю отчеты о сбоях со следующей ошибкой для некоторых пользователей, использующих Chrome 72 и выше для Windows:

TypeError · undefined is not a function

для функции

caches.keys

У кого-нибудь есть идеи, почему это может происходить.

Ответ №1:

Метод keys встречается только для объектов кэша.

Вы можете получить объекты кэша из cache.open функции.

Пример использования:

 caches.open(name).then(function(cache) {
  cache.keys().then(function(keys) {
    //Do something with keys
  });
})
  

Комментарии:

1. Пожалуйста, проверьте developer.mozilla.org/en-US/docs/Web/API/CacheStorage /…

2. Я понимаю. Мне жаль, что я тебя неправильно понял. Возможно, вам нужно сначала открыть кэш, прежде чем получать ключи?