Câu hỏi Tại sao lại sử dụng nhân viên dịch vụ để lưu vào bộ nhớ đệm khi bộ nhớ cache của trình duyệt xử lý bộ nhớ đệm?


Tôi đọc công nhân dịch vụ cho bộ đệm ẩn ngoại tuyến tương tự như bộ nhớ đệm của trình duyệt. Sau đó, tại sao lại thích nhân viên phục vụ cho bộ nhớ đệm này. Ngay cả bộ nhớ đệm của trình duyệt cũng sẽ kiểm tra tệp đã được sửa đổi hay không và sau đó phục vụ từ bộ nhớ cache, trong khi nhân viên dịch vụ chúng tôi đang xử lý cùng một điều từ mã của chúng tôi. Nhưng theo trình duyệt mặc định có tính năng đó thì tại sao lại thích nhân viên phục vụ?


24
2018-04-28 13:24


gốc




Các câu trả lời:


Công nhân dịch vụ cung cấp cho bạn toàn quyền kiểm soát các yêu cầu mạng. Bạn có thể trả lại bất kỳ thứ gì bạn muốn cho sự kiện tìm nạp, nó không cần phải là nội dung trong quá khứ hoặc hiện tại của tệp cụ thể đó.

Tuy nhiên, nếu bộ nhớ cache của trình duyệt xử lý các nhu cầu của bạn, bạn không có nghĩa vụ sử dụng Công nhân dịch vụ.

Chúng cũng được sử dụng cho những thứ như thông báo đẩy.

Tài liệu: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API, https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers


13
2018-04-28 19:21



Tôi thứ hai là "kiểm soát hoàn toàn các yêu cầu mạng". Nhân viên dịch vụ có thể làm những việc như thao tác tiêu đề và một tài nguyên với một tiêu đề khác (ví dụ: nếu ngoại tuyến) mà bộ nhớ cache của trình duyệt không thể thực hiện được. Nếu tất cả những gì bạn cần là bộ nhớ cache của trình duyệt chuẩn, không có lý do gì để thực hiện lại nó như một nhân viên dịch vụ - nó sẽ không nhanh hơn hoặc dễ sử dụng hơn. - mjs


Tôi muốn chia sẻ những điểm mà tôi đã quan sát trong khi đi qua tài liệu của nhân viên dịch vụ và triển khai nó.

  1. Bộ nhớ cache của trình duyệt khác nhau, vì nhân viên dịch vụ hỗ trợ bộ nhớ cache ngoại tuyến, webapp sẽ truy cập nội dung được lưu trong bộ nhớ cache, mặc dù mạng không khả dụng.
  2. Nhân viên dịch vụ sẽ cung cấp trải nghiệm bản địa.
  3. Nhân viên dịch vụ không thể sửa đổi nội dung DOM nhưng nó vẫn có thể phục vụ các trang trong phạm vi của nó. Với sự trợ giúp của các sự kiện như postMessage, trang có thể được truy cập và DOM có thể được thay đổi.
  4. Nhân viên dịch vụ không yêu cầu trang web hoặc tương tác của người dùng. Nó chạy ở chế độ nền.

3
2018-04-30 16:52



"Nhân viên phục vụ sẽ cung cấp trải nghiệm bản địa". ý bạn là gì? - Monsignor
Trải nghiệm gốc bằng cách cung cấp trải nghiệm ngoại tuyến phong phú, đồng bộ hóa nền định kỳ, thông báo đẩy - vbharath