HTML5 Performance
简介
performance是html5的新特性之一,通过它,页面的开发者们可以非常精确的统计到自己页面的表现情况,从而有针对性的进行优化,提升用户体验。
下面是小姐姐对performance相关API的学习总结,一起上车吧~
performance.timing
返回一个PerformanceTiming
对象,用来获取完整的页面加载信息。
是时候祭出这张图了:
我们会比较关注的几个时间段及其耗时的计算方法如下:
- DNS解析:
timing.domainLookupEnd - timing.domainLookupStart
- 建立连接:
timing.connectEnd - timing.connectStart
- 发送请求:
timing.responseStart - timing.requestStart
- 接收请求:
timing.responseEnd - timing.responseStart
- 解析DOM树:
timing.domInteractive - timing.domLoading
- 页面加载完成:
timing.domContentLoadedEventStart - timing.domInteractive
- DOMContentLoaded事件耗时:
timing.domContentLoadedEventEnd - timing.domContentLoadedEventStart
- DOM加载完成:
timing.domComplete - timing.domContentLoadedEventEnd
- DOMLoad事件耗时:
timing.loadEventEnd - timing.loadEventStart
performance.now
返回一个DOMHighResTimeStamp
对象,获取从timing.navigationStart
开始到调用该方法的时间,精确到千分之五毫秒(5微秒)。
下面是该方法的使用场景之一:通过计算代码块的起始位置以及结束位置performance.now()
的差值,来获取一个比较精确的代码执行时间。
看代码:
var startTime, endTime;
startTime = window.performance.now();
doSomething();
endTime = window.performance.now();
console.log(endTime - startTime);
资源性能数据
performance
提供若干API允许我们对页面中加载的资源进行性能分析。
performance.getEntries
获取一组当前页面已经加载的资源PerformanceEntry
对象。接收一个可选的参数options进行过滤,options支持的属性有name
,entryType
,initiatorType
。
var entries = window.performance.getEntries();
返回值如下图所示:
name
,根据entryType
不同,该值有不同含义。entryType
为resource
时,name
表示资源的路径。entryType
,取值有:resource
,mark
,measure
等,详情戳这里initiatorType
,初始化该资源的资源类型:- 初始化资源是一个`Element`时,取值为节点的`localName`,通过`element.localName`获取。
- 初始化资源是一个`css`文件时,取值为`css`。
- 初始化资源是一个`XMLHttpRequest`时,取值为`xmlhttprequest`。
- 初始化资源是一个`PerformanceNavigationTiming`对象时,取值为空字符串。startTime
,一个DOMHighResTimeStamp
对象,开始获取该资源的时间。duration
,一个DOMHighResTimeStamp
对象,获取该资源消耗时长。
performance.getEntriesByName
根据参数name
,type
获取一组当前页面已经加载的资源数据。name
的取值对应到资源数据中的name
字段,type
取值对应到资源数据中的entryType
字段。
var entries = window.performance.getEntriesByName(name, type);
performance.getEntriesByType
根据参数type
获取一组当前页面已经加载的资源数据。type
取值对应到资源数据中的entryType
字段。
var entries = window.performance.getEntriesByType(type);
performance.setResourceTimingBufferSize
设置当前页面可缓存的最大资源数据个数,entryType
为resource
的资源数据个数。超出时,清空所有entryType
为resource
的资源数据。
window.performance.setResourceTimingBufferSize(maxSize);
performance.onresourcetimingbufferfull
entryType
为resource
的资源数量超出设置值的时候会触发该事件。
performance.clearResourceTimings
移除缓存中所有entryType
为resource
的资源数据。
自定义计时接口
performance.mark
创建一个DOMHighResTimeStamp
保存在资源缓存数据中,可通过performance.getEntries()
等相关接口获取。
entryType
为字符串mark
name
为创建时设置的值startTime
为调用mark
时的时间duration
为0,因为mark
没有时长
window.performance.mark(name)
performance.clearMarks
移除缓存中所有entryType
为mark
的资源数据。
performance.measure
计算两个mark
之间的时长,创建一个DOMHighResTimeStamp
保存在资源缓存数据中,可通过performance.getEntries()
等相关接口获取。
entryType
为字符串measure
name
为创建时设置的值startTime
为调用measure
时的时间duration
为两个mark之间的时长
window.performance.measure(name, startMark, endMark);
performance.clearMeasures
移除缓存中所有entryType
为measure
的资源数据。
performance.navigation
返回一个PerformanceNavigation
类型的只读对象:
type
,进入页面的方式:- `TYPE_NAVIGATENEXT(0)`,通过点击链接,书签,在浏览器地址栏输入地址,或者通过脚本跳转
- `TYPE_RELOAD(1)`,通过点击页面内的刷新按钮,或者通过`Location.reload()`方法
- `TYPE_BACK_FORWARD(2)`,通过点击页面内的前进后退按钮
- `TYPE_RESERVED(255)`,其他方式redirectCount
,表示到达此页面之前经过多少次重定向。
performance.toJSON
返回一个包含performance
对象所有属性的JSON
对象。
THE END
以上就是全部内容啦,有意见或者建议欢迎积极留言哦,笔芯~
HTML5 Performance的更多相关文章
- 2018年html5入门到精通教程电子书百度云盘下载共22本
名称 查看 <HTML5启动和运行>(HTML5.Up.and.Running)扫描版[PDF] 下载 <Pro HTML5 Performance>(Pro HTML5 Pe ...
- (转) [it-ebooks]电子书列表
[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...
- 使用Javascript监控前端相关数据
项目开发完成外发后,没有一个监控系统,我们很难了解到发布出去的代码在用户机器上执行是否正确,所以需要建立前端代码性能相关的监控系统. 所以我们需要做以下的一些模块: 一.收集脚本执行错误 functi ...
- Web性能优化系列
web性能优化之重要,这里并不打算赘述.本系列课程将带领大家认识.熟悉.深刻体会并且懂得如果去为不同的站点做性能优化 同时,本系列将还会穿插浏览器兼容性相关问题的解决方案,因为在我看来,兼容性同样属于 ...
- HTML5的学习--performance获取加载时间的工具
前段时间因为项目需要获取页面加载的时间,就去看了下HTML5中的performane. 可以用其获得页面详细的加载时间. 关于performance的详细内容可以查看 http://www.cnblo ...
- HTML5的学习--performance
HTML5提供的performance接口精确的告诉我们当访问一个网站页面时当前网页每个处理阶段的精确时间(timestamp),以方便我们进行前端分析. 它是浏览器的直接实现,比在网页中用js设置D ...
- HTML5 学习总结(一)——HTML5概要与新增标签
一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电.触摸 ...
- 基于HTML5实现3D热图Heatmap应用
Heatmap热图通过众多数据点信息,汇聚成直观可视化颜色效果,热图已广泛被应用于气象预报.医疗成像.机房温度监控等行业,甚至应用于竞技体育领域的数据分析. http://www.hightopo.c ...
- HTML5 学习笔记(一)——HTML5概要与新增标签
目录 一.HTML5概要 1.1.为什么需要HTML5 1.2.什么是HTML5 1.3.HTML5现状及浏览器支持 1.4.HTML5特性 1.5.HTML5优点与缺点 1.5.1.优点 1.5.2 ...
随机推荐
- Python:glob
学习自: (1)Python标准库glob模块_lianghe77的博客-CSDN博客_glob库 (2)Python:glob与os.listdir_鳄鱼的博客-CSDN博客 (3)python文件 ...
- Vue el-date-picker 日期组件的使用
一:显示年月 <el-date-picker v-model="selectMonth" type="month" placeholder="选 ...
- C#10新特性-lambda 表达式和方法组的改进
C# 10 中对Lambda的语法和类型进行了多项改进: 1. Lambda自然类型 Lambda 表达式现在有时具有"自然"类型. 这意味着编译器通常可以推断出 lambda 表 ...
- 写下载的时候,axios的responseType: "blob"(一定要修改)
download(data, fileName) { // window.URL.createObjectURL创建一个地址. const url = window.URL.c ...
- Actor model 的理解与 protoactor-go 的分析
Overview Definition From wikipedia The actor model in computer science is a mathematical model of co ...
- jquery, js轮播图插件Swiper3
轮播图插件Swiper3 HTML代码 如果只是简单的使用轮播图,直接复制我的html代码就可以. 如果想要高级一些,就自己去看文档吧 <!DOCTYPE html> <html l ...
- 关于dotnet动态生成controller的问题
一些动态生成controller的问题 前言 最近在写包, 一开始封装了仓储Repository用于操作数据库, 然后为了快速开发一些业务简单的接口, 通过QueryController , Modi ...
- 报错 ———— Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。
报错 <?xml version="1.0" encoding="UTF-8"?> 必须是XML文件的第一个元素且前面不能空格. ### Erro ...
- Ubuntu 11.04 LAMP+JSP环境安装过程
安装LAMP命令:sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server libapache2-mod-auth-mysq ...
- Tomcat高级配置(应用场景总结及示例)
前言 本文将解决以下问题: 如何将Linux下任意位置的项目(虚拟目录)部署到tomcat? 如何将项目部署到服务器特定端口? 如何在一个服务器上部署多个web应用? 本例中 系统:Linux ver ...