Beacon API

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

Beacon API được dùng để gửi một yêu cầu bất đồng bộ và không chặn tới máy chủ web. Yêu cầu này không mong đợi phản hồi. Không giống các yêu cầu được thực hiện bằng XMLHttpRequest hoặc Fetch API, trình duyệt bảo đảm sẽ khởi tạo các yêu cầu beacon trước khi trang được dỡ tải và thực thi chúng cho đến khi hoàn tất.

Trường hợp sử dụng chính của Beacon API là gửi dữ liệu phân tích như các sự kiện phía máy khách hoặc dữ liệu phiên lên máy chủ. Trước đây, các trang web thường dùng XMLHttpRequest cho mục đích này, nhưng trong một số tình huống trình duyệt không bảo đảm sẽ gửi các yêu cầu bất đồng bộ đó (ví dụ, khi trang sắp bị dỡ tải). Để khắc phục, các trang web đã phải dùng nhiều kỹ thuật khác nhau, chẳng hạn biến yêu cầu thành đồng bộ, nhưng điều này ảnh hưởng xấu đến khả năng đáp ứng. Vì các yêu cầu beacon vừa bất đồng bộ vừa được bảo đảm gửi đi, chúng kết hợp được hiệu năng tốt với độ tin cậy cao.

Để biết thêm chi tiết về động cơ ra đời và cách dùng API này, hãy xem tài liệu cho phương thức navigator.sendBeacon().

Note: API này không dùng được trong Web Workers (không được cung cấp qua WorkerNavigator).

Giao diện

API này chỉ định nghĩa một phương thức duy nhất: navigator.sendBeacon().

Phương thức này nhận hai đối số là URL và dữ liệu cần gửi trong yêu cầu. Đối số dữ liệu là tùy chọn và có thể có kiểu là chuỗi, ArrayBuffer, TypedArray, DataView, ReadableStream, Blob, đối tượng FormData, hoặc đối tượng URLSearchParams. Nếu trình duyệt đưa yêu cầu vào hàng đợi để gửi thành công thì phương thức trả về true; nếu không, nó trả về false.

Thông số kỹ thuật

Specification
Beacon
# sendbeacon-method

Tương thích trình duyệt

Xem thêm