当前位置: 首页 > news >正文

企业网站建设联系电话百度推广外包

企业网站建设联系电话,百度推广外包,龙炎电商软件,dw网页制作教程视频简单第二期js的sendBeacon方法介绍 Beacon API是一种轻量级且有效的将网页活动记录到服务器的方法。它是一个 JavaScript API,可帮助开发人员将少量数据(例如分析或跟踪信息、调试或诊断数据)从浏览器发送到服务器。 在本文中,我们将介绍B…

js的sendBeacon方法介绍

Beacon API是一种轻量级且有效的将网页活动记录到服务器的方法。它是一个 JavaScript API,可帮助开发人员将少量数据(例如分析或跟踪信息、调试或诊断数据)从浏览器发送到服务器。

在本文中,我们将介绍Beacon API的相关知识。

什么是sendBeacon

从W3C 的sendBeacon规范来看,Beacon 是:

Web 开发人员可以使用一个接口来安排异步和非阻塞的数据传输,从而最大限度地减少与其他时间关键操作的资源争用,同时确保此类请求仍然得到处理并传输到目的地。

有一些来自浏览器的 HTTP 请求不需要读取甚至等待服务器响应,通常是事件跟踪、状态更新和分析数据。此类请求的特点是:

  • 无需访问 HTTP 响应 - 发送后就忘记
  • 轻量级 - 不应影响用户体验或占用太多网络带宽
  • 发生在后台,无需用户交互
  • 关闭页面(又称为页面卸载)时需要可靠发送

Beacon API 的明确目标是为 Web 开发人员提供一个最小的接口来指定数据和端点,然后让浏览器合并请求。

sendBeacon请求包含了以下几个特点:

  • 信标请求不需要响应。这与客户端(浏览器)期望服务器响应的常规XHR请求或fetch请求有很大的不同。
  • 即使关闭浏览器,sendBeacon请求也保证在页面卸载之前启动。
  • sendBeacon请求无需阻塞请求(例如 XHR)即可完成(注意,sendBeacon请求不是XHR请求)。
  • 请求按优先级排列,以避免与时间关键的操作和更高优先级的网络请求竞争。
  • 使用 HTTP POST 方法。

sendBeacon的使用

虽然sendBeacon具有广泛的浏览器支持,但是为了安全起见,我们可以使用下面的代码进行简单的检查简单来测试浏览器支持:

if (navigator.sendBeacon) {navigator.sendBeacon('/log-tracking', data);
} else {// 备选方案
}

sendBeacon方法采用两个参数:服务器的 URL 和数据。sendBeacon()方法返回一个布尔值。当请求正确放入队列时它返回true,否则返回false

sendBeacon()data是可选的,并且其类型可以为ArrayBufferViewBlobDOMStringFormData

function sendAnalytics(msg) {if (navigator.sendBeacon) {let data = new FormData();data.append('start', startTime);data.append('end', performance.now());data.append('msg', msg);navigator.sendBeacon('/log-tracking', data);} else {// 备选方案}
}

在上面的示例中,我们发送用户在启动应用程序上花费的时间和时间。我们还发送一个跟踪msg,捕获用户将执行的活动(例如,单击按钮、滚动到页面部分等)

备选方案

通过使用XMLHttpRequestfetch,我们可以在后台定期发布数据,并且不读取响应也完全可以。

另一种方法是创建一个img元素并利用它向服务器发出 GET 请求的原理实现数据的上传

const img = new Image();
img.src = `http://xxx?${JSON.stringify(data)}`;

问题是当用户关闭页面时,最后一个请求被终止并且无法恢复。换句话说,大量分析数据丢失并导致数据失真。

为了避免关闭页面问题,一个解决方案是在关闭页面(beforeunloadunload监听)之前创建一个同步的请求 ,这对用户体验非常不利,因为它会阻止页面卸载(想象一下用户必须等待相当长的时间才能关闭浏览器选项卡)。

注意事项

navigator.sendBeacon()方法通过HTTP将少量数据异步发送到 Web 服务器。它旨在与visibilitychange事件结合使用(但不能与beforeunloadunload事件结合使用)。

除了阻止页面卸载之外,浏览器不会像我们期望的那样可靠地触发beforeunloadunload这两个事件。

许多开发人员将unload事件视为有保证的回调,并将其用作会话结束信号来保存状态并发送分析数据,但这样做非常不可靠,尤其是在移动设备上!在许多典型的卸载情况下,unload事件不会触发,包括从移动设备上的选项卡切换器关闭选项卡或从应用程序切换器关闭浏览器应用程序。sendBeacon请求保证在页面卸载之前启动,并且允许运行完成,而无需阻止请求或阻止处理用户交互事件的其他技术。

与其他请求方式不同,sendBeacon可以由浏览器调度和合并。这就导致 HTTP 请求时间可能会延迟(可以在请求有效负载中包含时间戳数据来解决)。

使用场景

有两个主要场景可以使用Beacon API:

用户活动跟踪和分析

当我们想要捕获并发送用户活动和行为的分析报告。这些活动可能包括,

  • 用户在会话中停留了多长时间?
  • 用户使用哪些用户界面控件?
  • 要捕获的任何其他类型的信息(比如说js的错误)

调试和诊断

我们可能会遇到某个功能可以在本地(开发模式)运行,但在客户环境(生产模式)中无法按预期运行的情况,在这种情况下可以逻辑地发送这些轻量级信标请求来记录有用的跟踪路径信息并根据需要进行调试、排查错误。

sendBeacon 的数据限制

浏览器对sendBeacon发送的数据大小都是由一定的限制的,以确保请求能够快速、及时地完成。这里没有具体说明限制的数值是因为不同的浏览器供应商的实际实现可以有所不同(不过在w3c的beacon相关的issue中提到了限制大小为64kb,当然这是非标准的)。

http://www.yayakq.cn/news/937656/

相关文章:

  • 开发购物网站厦门网站设计品牌企业
  • 金融行业无锡seo推广优化
  • 做常识的网站3.0效果网站建设多少钱
  • 陕西建设执业中心网站一元购网站建设流程图
  • 东莞市建设厅官方网站运动器材网站建设
  • 工商企业网站怎么用服务器做网站
  • 网站开发要多久wordpress注册链接修改密码
  • 汽车网站建设流程图公司网站模板制作
  • 中文网站建设公司排名企业网站设计调查问卷
  • ppt模板下载网站有哪些wordpress能大网站
  • 免费网站制作在线饶平网站建设
  • 后台管理页面模板丰台网站关键词优化
  • 做软文的网站python网站入口
  • 汕头网站优化哪家好做网站 二维码登录
  • 做网站淘宝条形码wordpress添加主题设置页面
  • 长沙php的网站建设公司张启亚学做网站
  • 网站优化建设郑州wordpress 首页 缩略图
  • 高端网站的特点央视新闻的新闻
  • 做企业网站怎样做网站计算机速成培训班
  • 长春市建设技工学校网站手工制作过程
  • 企业网站做备案张槎建网站
  • 全屏的网站济南建筑公司排名
  • 沈阳网站制作招聘网高质量发展服务业
  • 收录查询 站长工具开店做网站有什么好处
  • 异地备案 网站WordPress禁用f12
  • 网站建设九亭网创项目平台
  • 做杂志的模板下载网站创建自己的网站有什么用
  • 辽宁网站建设公司电话计算机培训班价格
  • centos 网站开发工具黄骅住房和城乡建设局网站
  • 专门做五金的网站soso搜搜