Не удалось выполнить «выборку» для «ServiceWorkerGlobalScope»: «только-если-кэшировано» может быть установлено только в режиме «того же источника». - PullRequest
0 голосов
/ 13 марта 2019

У меня проблема: я могу кешировать все запросы в кеше браузера, используя сервисный работник с ключом «test-cache» ниже код моего работника службы

importScripts(
  "https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js"
);

importScripts("precache-manifest.9d2e799ef79d895c26b690a7dfad32c3.js");

workbox.clientsClaim();
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});

workbox.routing.registerNavigationRoute("https://myurl.com/test", {});

self.addEventListener("activate", event => {
  event.waitUntil(
    (async function() {
      const cacheNames = await caches.keys();
      await Promise.all(
        cacheNames
          .filter(cacheName => {
            // Return true if you want to remove this cache,
            // but remember that caches are shared across
            // the whole origin
          })
          .map(cacheName => caches.delete(cacheName))
      );
    })()
  );
});

self.addEventListener("install", e => {
  e.waitUntil(
    // after the service worker is installed,
    // open a new cache
    caches.open("test-cache").then(cache => {
      // add all URLs of resources we want to cache
      return cache.addAll([
        "/wp-content/plugins/woo-test/templates/index.html",
        "/wp-content/plugins/woo-test/static/css/2.82f81fb6.chunk.css",
        "/wp-content/plugins/woo-test/static/css/main.17dd7fa1.chunk.css",
        "/wp-content/plugins/woo-test/static/js/2.de55d337.chunk.js",
        "/wp-content/plugins/woo-test/static/js/main.b4a4b6e6.chunk.js"
      ]);
    })
  );
});

addEventListener("fetch", function(event) {
  event.respondWith(
    caches.match(event.request).then(function(response) {
      if (response) {
        return response; // if valid response is found in cache return it
      } else {
        return fetch(event.request) //fetch from internet
          .then(function(res) {
            return caches.open("test-cache").then(function(cache) {
              cache.put(event.request.url, res.clone()); //save the response for future
              return res; // return the fetched data
            });
          })
          .catch(function(err) {
            // fallback mechanism
            console.log("err");
            console.log(err);
            return caches.open("test-error").then(function(cache) {
              return cache.match("/offline.html");
            });
          });
      }
    })
  );
}); 

Как вы можете видеть выше, при настройке браузера в автономном режиме я получил «только если кэшировано», можно установить только с «тем же источником», кто-нибудь знает, как решить эту проблему. я работаю на местном

...