2016-02-08 21 views
5

Tôi đã cố gắng lưu trữ một yêu cầu POST trong một nhân viên dịch vụ khi tìm nạp sự kiện.Nhân viên dịch vụ có thể lưu trữ các yêu cầu POST không?

Tôi đã sử dụng cache.put(event.request, response), nhưng lời hứa đã trả lại bị từ chối với TypeError: Invalid request method POST..

Khi tôi cố gắng truy cập cùng một API POST, caches.match(event.request) đã cho tôi không xác định.

Nhưng khi tôi làm tương tự cho phương thức GET, nó hoạt động: caches.match(event.request) cho yêu cầu GET đã cho tôi phản hồi.

Nhân viên dịch vụ có thể lưu trữ các yêu cầu POST không? Trong trường hợp họ không thể, chúng tôi có thể sử dụng phương pháp nào để làm cho ứng dụng thực sự ngoại tuyến?

+0

Nó sẽ rất dễ dàng để chỉ cần thử nó :) – Marco

Trả lời

13

Bạn không thể lưu trữ các yêu cầu POST bằng cách sử dụng API bộ nhớ cache. Xem https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-put-method (điểm 2.2).

Có một cuộc thảo luận liên quan trong kho spec: https://github.com/slightlyoff/ServiceWorker/issues/693

Một giải pháp thú vị là một trong những thể hiện trong ServiceWorker Cookbook: https://serviceworke.rs/request-deferrer.html Về cơ bản, giải pháp serializes yêu cầu IndexedDB.

Các vấn đề liên quan