2016-07-01 2 views
1

Ich arbeite mit einem Service Worker und Socket.io für eine mobile Scorekeeping-App. Die Ergebnisse werden in einer Datenbank gespeichert und in HTML gerendert, und dieser HTML-Code wird im Service Worker zwischengespeichert. Es ist etwas, was ich mit dem Service Worker erreichen möchte, aber wenn die Scores aktualisiert werden, werden die alten Scores bei der Aktualisierung angezeigt.Service Worker + Socket.io: Überschreibt die zwischengespeicherte Seite bei einem neuen Besuch

Wie kann ich den Service Worker veranlassen, bei jedem Besuch oder Aktualisieren der Seite die neueste Version einer HTML-Seite zu laden?

Mein Code zum Abrufen und Caching:

this.addEventListener('fetch', function(event) { 
    event.respondWith(
     caches.match(event.request).then(function(response) { 
      if(response) { 
       console.log('found cached response', response); 
       return response; 
      } else { 
       console.log('response not in cache, fetching it'); 
       return fetchAndCache(event); 
      } 
     }) 
    ); 
}); 

function fetchAndCache(event) { 
    return fetch(event.request).then(function(response) { 
     return caches.open('UFA-other-1.0').then(function(cache) { 
      console.log('fetched and caching', event.request); 
      cache.put(event.request, response.clone()); 
      return response; 
     }); 
    }); 
} 

Antwort

0

Erstens: Können Sie es nicht automatisieren alle sw-precache von Google verwenden?

Wenn nicht, dann kann ihre manuelle Bibliothek, sw-toolbox, einige Strategien anbieten, die nützlich sind. Sie können sich für verschiedene Strategien entscheiden, wie z. B. Netzwerk zuerst oder am schnellsten. Weitere Dokumentation finden Sie unter here.

Um Ihre Frage zu beantworten: Ein Service-Mitarbeiter ruft nach der richtigen Konfiguration die neueste Version aller Dateien auf, die Sie zwischenspeichern möchten. Diese Dateien werden jedoch erst beim nächsten Laden oder erneuten Laden der Seite verwendet.

Sie werden unter Mozilla service worker example page sehen, dass sie nach dem erneuten Laden der Seite eine Nachricht anzeigen, die den Benutzer darauf hinweist, dass eine neuere Version der Seite verfügbar ist.

Hoffe, dass hilft!

Verwandte Themen