Verwenden Sie den ServiceWorker-Cache nur im Offline-Modus

9

Ich versuche Service-Mitarbeiter in meine App zu integrieren, aber ich habe festgestellt, dass der Service-Mitarbeiter versucht, zwischengespeicherten Inhalt auch im Online-Modus abzurufen, aber ich möchte, dass er das Netzwerk in diesen Situationen bevorzugt. Wie kann ich das machen? Unten ist der Code, den ich jetzt habe, aber ich glaube nicht, dass es funktioniert. Der SW-Installationscode wurde aus Platzgründen weggelassen.

%Vor%

Dies scheint zu Warnungen wie The FetchEvent for "[url]" resulted in a network error response: an object that was not a Response was passed to respondWith(). zu führen. Ich bin neu für Service-Mitarbeiter, also entschuldige mich für jegliche falsche Terminologie oder schlechte Praktiken. Danke!

    
Ruben Martinez Jr. 09.10.2015, 19:09
quelle

2 Antworten

4

Ohne dies auszuprobieren, schätze ich, dass Sie respondWith() nicht richtig auflösen, wenn keine Cache-Übereinstimmung vorhanden ist. Laut MDN soll der an respondWith() übergebene Code "auflösen" durch Zurückgeben eines Antwort- oder Netzwerkfehlers an Fetch. " Warum versuchen Sie es nicht einfach:

%Vor%     
Brendan Ritchie 11.10.2015, 22:51
quelle
2

Warum öffnest du nicht den Cache für dein Fetch Event? Ich denke, der Prozess eines Servicemitarbeiters ist:

  • Öffne deinen Cache

  • Überprüfen Sie, ob die Anfrage mit einer Antwort in Ihrem Cache übereinstimmt

  • Dann antwortest du

ODER (wenn die Antwort nicht im Cache ist):

  • Überprüfen Sie die Anfrage über das Netzwerk

  • Klonen Sie Ihre Antwort aus dem Netzwerk

  • Fügen Sie die Anfrage und den Klon der Antwort zur zukünftigen Verwendung in Ihren Cache ein

Ich würde schreiben:

%Vor%     
Marina ES 12.03.2018 15:37
quelle