Beacon API

Beacon API 用于发送异步和非阻塞请求到服务器。这类请求不需要响应。与 XMLHttpRequestFetch API 请求不同,浏览器会保证在页面卸载前,将信标请求初始化并运行完成。

Beacon API 主要的使用场景是将分析数据发送给服务器,如:客户端事件、会话数据等。在过去,网站使用 XMLHttpRequest 来做这件事,但是浏览器无法保证在某些情况发送这些请求(如:页面将被卸载)。为了解决这个问题,网站采取了各种各样的技术,例如使用同步请求,但是这样对性能造成了很糟糕的影响。因为信标请求是异步的并且保证发送,所以它们结合了良好的性能特征和可靠性。

如需了解 Beacon API 更多的细节和用例,请参考 navigator.sendBeacon() 方法。

备注:Beacon API 在 Web Worker 中是不可用的(没有通过 WorkerNavigator 暴露出来)。

接口

Beacon API 定义了一个独立的方法:navigator.sendBeacon()

该方法接受 2 个参数,URL 和要在请求中发送的数据(data)。data 参数是可选的,其类型可以是 TypedArrayDataViewBlob、字符串字面量、普通对象或 FormData 对象。如果浏览器成功地将请求排队交付,则该方法返回“true”,否则返回“false”。

规范

Specification
Beacon
# sendbeacon-method

浏览器兼容性

BCD tables only load in the browser

参见