当浏览器关闭时如何发送http请求

https://mp.weixin.qq.com/s/QPNgEkee8x1HcIdNmushRw

页面浏览器开始卸载页面并对其内存清理时,该页面就进入终止状态。在此状态下,不会执行任何新任务[3],同时正在处理中的任务如果运行时间过长可能会被杀死。

简单来说,浏览器的设计是基于这样的假设:只要页面关闭时,后台队列中的任何进程都不需要再继续执行。

是使用 keep-alive 标志的 fetch,还是用 sendBeacon 来发送页面终止时的请求肯定需要权衡。以下建议或许可以帮助你在不同情况下做出正确的选择:

  • 以下情况可以选择 fetch() + keepalive:
    你需要简单的发送自定义 headers 的请求
    你需要使用 GET 而非 POST
    你需要兼容老旧的浏览器(例如 IE),并已经有了一个 fetch 方法的 polyfill
  • 以下情况使用 sendBeacon() 或许更好:
    你只需要发送一个简单的服务请求,而不需要太多的定制化
    你喜欢更简约更优雅的代码方式
    你需要保证该请求不会和其他更重要的请求竞争资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值