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!
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:
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%Tags und Links javascript service-worker web-worker browser-cache