Service Worker speichert Dateien im Cache, aber das Abrufereignis wird nie ausgelöst

Ich habe gerade versucht, Service-Worker zu implementieren, um einige JSON-Dateien und andere Assets auf einer statischen Site zwischenzuspeichern (ausgeführt auf localhost chrome Version 47.0.2526.73 (64-bit)). Verwenden von cache.addAll () Ich habe meine Dateien zum Cache hinzugefügt. Wenn ich die Registerkarte "Ressourcen" in Chrome öffne und auf "Cache-Speicher" klicke, werden alle Dateien aufgelistet.

Das Problem, das ich habe, ist, dass mein Service-Worker in chrome: // service-worker-internals als "aktiviert" und "aktiv" aufgeführt ist. Ich kann jedoch nicht feststellen, ob der Worker die Anforderungen tatsächlich abfängt und die zwischengespeicherten Dateien bereitstellt . Ich habe den Ereignis-Listener hinzugefügt, und selbst wenn ich das Ereignis in der Instanz der Service Worker-Entwicklungstools auf der Konsole protokolliere, wird der Haltepunkt nie erreicht:

this.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open('v1').then(function(cache) {
      console.log(cache);
      return cache.addAll([
        '/json/0.json',
        '/json/1.json',
        '/json/3.json',
        '/json/4.json',
        '/json/5.json',
      ]);
    })
  );
});

this.addEventListener('fetch', function(event) {
  console.log(event);
  var response;
  event.respondWith(caches.match(event.request).catch(function() {
    return fetch(event.request);
  }).then(function(r) {
    response = r;
    caches.open('v1').then(function(cache) {
      cache.put(event.request, response);
    });
    return response.clone();
  }).catch(function() {
  }));
});

Grundsätzlich gehe ich Dinge genau so durch, wie es im HTML5 Rocks Service Worker Intro beschrieben ist, aber ich bin mir ziemlich sicher, dass meine Assets nicht aus dem Cache ausgeliefert werden. Ich habe festgestellt, dass von einem Servicemitarbeiter bereitgestellte Assets auf der Registerkarte "Netzwerk" von devtools in der Spalte "Größe" als solche gekennzeichnet sind, indem "Von Servicemitarbeitern" angegeben wird.

Es scheint nur so, als ob mein Code nicht anders ist als die Beispiele, aber es trifft aus irgendeinem Grund nie auf das Abrufereignis. Inhalt meines Codes:https: //gist.github.com/srhise/c2099b347f68b958884

Antworten auf die Frage(8)

Ihre Antwort auf die Frage