Сервисные работники - выборочно выбирайте ресурсы - PullRequest
1 голос
/ 14 февраля 2020

У меня есть простая реализация Service Worker, такая как:

var CACHE_NAME = "app-cache-v1";
var urlsToCache = ["./style/main.css", "./app.ts.js"];

self.addEventListener("install", function(event) {
    event.waitUntil(
        caches.open(CACHE_NAME).then(function(cache) {
            return cache.addAll(urlsToCache);
        })
    );
});
self.addEventListener("activate", function(event) {
    event.waitUntil(
        caches.keys().then(function(cacheNames) {
            return Promise.all(
                cacheNames.map(function(cacheName) {
                    return caches.delete(cacheName);
                })
            );
        })
    );
});

self.addEventListener("fetch", function(event) {
    event.respondWith(
        fetch(event.request).catch(function() {
            return caches.match(event.request);
        })
    );
});

Моя цель - кэшировать все ресурсы, кроме двух файлов, указанных в переменной urlsToCache, эти два файла ВСЕГДА следует запрашивать у сеть .. Как я могу добиться этого? Как я могу тогда убедиться, что это действительно так?

1 Ответ

0 голосов
/ 14 февраля 2020

Вы можете проверить URL запроса в обработчике событий fetch, прежде чем решить, какую стратегию кэширования использовать:

self.addEventListener("fetch", function(event) {
  const url = new URL(event.request.clone().url);
  if (urlsToCache.indexOf(url.pathname) !== -1) { // check if current url exists in your array
     event.respondWith(
         // without cacheing
     );
  } else {
     event.respondWith(
        // with cacheing
     );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...