Обход кеширования Service-Worker - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть прогрессивное веб-приложение, которое говорит с API. Вызовы к этому API кешируются сервисным работником, который прекрасно работает.

Но теперь я хочу добавить кнопку перезагрузки, которая в идеале заставляет работника службы пытаться обойти кеш и обновлять его в случае успеха, а также не должна возвращать кэшированный результат, если не удалось установить соединение.

Я немного не уверен, как решить эту проблему. Я использую sw-toolbox .

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Все запросы проходят через обратный вызов fetch, который получает объект запроса . Таким образом, перед возвратом кэшированного ответа вы можете найти дополнительный параметр заголовка (необходимо включить его в запрос к API), чтобы пропустить логику , возвращающую кэшированный ответ .

0 голосов
/ 04 мая 2018

На основании вашего описания вы используете кеш приложения. Доступ к нему можно получить из приложения, независимого от sw-toolbox.

  function onReloadButtonClicked(event) {
      //Check for browser cache support
      if ('caches' in window) {
        //Update cache if network query is successful
        caches.open('your_cache_name')
          .then(function(cache) {
            cache.add('your_url');
          }).catch(function(err) {
            // Do something with the error
          });
      }
    }
...