Beacon API 是一种用于在浏览器中异步发送数据的 Web API。它通常用于在页面关闭前发送一些数据,以确保这些数据不会因为页面的关闭而丢失。
1. 工作机制
当用户关闭页面后,浏览器会执行一些幕后工作,比如关闭页面相关资源、清理页面状态,还有比如检查是否有未发送的Beacon请求,并尝试去发送请求,这些都是在后台线程进行,所以并不会阻碍页面的关闭。
而 Beacon API 正是因为浏览器这种后台机制,使得页面关闭后依然可以发送请求。
2. 特点
- 异步非阻塞
调用接口后,无需等待服务器响应,而是把网络请求加入队列,不会影响页面代码执行和用户体验。
加入队列后,浏览器会等网络空闲进行请求,不影响页面中其它资源的网络传输
- 数据缓存
加入队列后,需要发送的数据将被缓存起来,从而避免页面关闭造成数据丢失
- 支持多种数据格式
允许发送的数据格式有String、ArrayBuffer、TypedArray、DataView、ReadableStream、Blob、FormData对象和URLSearchParams
- 请求结果无通知和提示
静默执行,请求成功或失败,浏览器都不会有提示