前端获取页面帧耗时的方法
一、前端获取页面帧耗时的方法
1、使用performance.timing接口
performance.timing接口允许我们获取页面各个阶段的耗时,从而得出页面总的渲染耗时。
performance.timing接口的主要属性如下:
navigationStart:浏览器准备好使用http请求开始获取文档时的时间,这个时间其实很难定义;
unloadEventStart:上个文档的onunload事件开始回调时的时间,如果没有onunload或没有前一个文档则该属性值为0;
unloadEventEnd:上个文档的onunload事件完成回调时的时间,如果没有onunload或没有前一个文档则该属性值为0;
redirectStart:如果文档存在重定向,重定向开始的时间;
redirectEnd:如果文档存在重定向,重定向完成的时间;
fetchStart:开始检索网页的时间,即开始向服务器发出HTTP请求的时间;
domainLookupStart:开始查本地DNS缓存或查询DNS的时间;
domainLookupEnd:DNS查询完成的时间;
connectStart:完成TCP三次握手开始的时间;
connectEnd:完成TCP三次握手结束的时间;
secureConnectionStart:如果页面使用https,则此属性表示SSL安全连接开始握手的时间,如果不使用https,则该属性值为0;
requestStart:开始发出请求的时间,可以认为就是发出HTTP请求的时间;
responseStart:接收到第一个字节的时间;
responseEnd:接收到最后一个字节的时间;
domLoading:开始解析文档的时间,即开始载入DOM树的时间;
domInteractive:文档载入完成的时间;
domContentLoaded:文档载入完成的时间,即DOM树加载完成的时间;
domComplete:DOM操作完成的时间;
loadEventStart:onload事件开始回调的时间;
loadEventEnd:onload事件完成回调的时间。
使用performance.timing接口可以获得从开始发出http请求到页面加载完成的帧耗时,只需要计算以下几个时间的差值即可:
responseEnd - fetchStart:此值表示从发出http请求到接收到第一个字节的耗时;
domComplete - domLoading:此值表示从载入DOM树到操作完成的耗时;
loadEventEnd - navigationStart:此值表示从浏览器获取文档到onload回调完成的耗时。
2、使用requestAnimationFrame接口
requestAnimationFrame接口是浏览器提供的一个API,使用该API开发者可以在浏览器帧同步时调用回调函数来进行操作,并且可以获取上一次回调函数完成的时间,因此使用该API可以获取页面渲染帧耗时。
使用requestAnimationFrame接口获取帧耗时的基本原理如下:
(1)首先调用 requestAnimationFrame(callback) 接口,在回调函数callback中记录开始时间 startTime;
(2)在回调函数callback中再次调用 requestAnimationFrame(callback) 接口,在回调函数中记录当前结束时间 endTime;
html animation属性 (3)计算 endTime - startTime,即可获取页面上一次渲染帧的耗时。
总结:以上就是前端获取页面帧耗时的两种方法,可以根据具体情况灵活使用这两种方法来获取页面帧耗时。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论