2016-02-08 8 views
5

Ich habe versucht, eine POST-Anfrage in einem Service-Mitarbeiter auf Fetch-Ereignis zwischenzuspeichern.Können Service-Mitarbeiter POST-Anfragen zwischenspeichern?

Ich habe cache.put(event.request, response) verwendet, aber das zurückgegebene Versprechen wurde mit TypeError: Invalid request method POST. abgelehnt.

Als ich versuchte, die gleiche POST-API zu treffen, gab mir caches.match(event.request) undefined.

Aber als ich das gleiche für GET-Methoden, funktionierte es: caches.match(event.request) für eine GET-Anfrage gab mir eine Antwort.

Können Service-Mitarbeiter POST-Anfragen zwischenspeichern? Falls nicht, welchen Ansatz können wir verwenden, um Apps wirklich offline zu machen?

+0

Es sollte sehr einfach sein, es einfach zu versuchen :) – Marco

Antwort

13

Sie können POST-Anfragen nicht mit der Cache-API zwischenspeichern. Siehe https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-put-method (Punkt 2.2).

Es gibt eine ähnliche Diskussion in der Spec-Repository: https://github.com/slightlyoff/ServiceWorker/issues/693

Eine interessante Lösung der in dem Serviceworker Kochbuch präsentiert ist: https://serviceworke.rs/request-deferrer.html Grundsätzlich ist die Lösung serialisiert Anfragen an IndexedDB.