2016-06-28 2 views
0

Während ich daran arbeite progressive Web-Apps zu erstellen. Wir stehen einem merkwürdigen Verhalten für den Service-Mitarbeiter gegenüber.Vom Service-Mitarbeiter werden mehrere Anfragen gestellt, um eine Ressource zwischenzuspeichern

1. Clear cache and unregister service worker 
2. Go to www.example.com 
3. Examine the network calls for resources (JS/CSS) 

Erwartetes Ergebnis: Nur einzelne Netzwerkanforderung für eine Ressource gehen sollte.

Tatsächliches Ergebnis: Zwei Netzwerkanforderungen für jede der Ressource gemacht werden [SCREENSHOT[1]

+0

Es ist schwer zu sagen, ohne y zu sehen unser Service-Arbeiter-Code. – Kinlan

+0

Ich verwende sw-Precache für statische Ressourcen und auch Toolbox für dynamische. Paul, Ist dies, weil sw sich parallel anmeldet und eine Netzwerkanfrage für vorab zwischengespeicherte Objekte macht? Ich kann meinen Code mit dir teilen, wenn du willst. –

Antwort

5

Was Sie in sw-precache sind zu sehen, die Ressourcen zu holen ihre Caches zu füllen. Dies geschieht unabhängig von der ersten Anfrage der kontrollierten Seite. Es ist ein ziemlich häufiges Modell, ob Sie sw-precache verwenden oder nicht.

(Nebenbei, ich sehe, dass Sie explizit versionieren Ihre JS und CSS-Ressourcen, die großartig ist. Sie werden feststellen, dass sw-precache fügt einen Cache-Busting-Header zu seinen Precaching-Anfragen jetzt, was bedeutet, dass sie Ich werde immer gegen das Netzwerk anstelle des HTTP-Browser-Caches gehen. Die kommende Version 4.0.0 von sw-precache, die Sie jetzt über den Zweig master verwenden können, hat eine neue dontCacheBustUrlsMatching option, die es Ihnen ermöglicht, Cache-Busting für Ressourcen zu deaktivieren Die Verwendung dieser Option bedeutet, dass die zusätzliche sw-precache Anfrage, um ihre Caches zu füllen, über den HTTP-Browser-Cache erfüllt wird und eine Reise ins Netzwerk überspringt.

Verwandte Themen