利用performance属性查看网页性能
一般我们可以通过浏览器的调试工具-网络面板,或者代理工具查看网页加载过程中的各个阶段的耗时。而利用window.performance属性则可以获得更为精确的原始数据,以毫秒为单位,精确到微秒。
performance.timing属性介绍
图片说明如下:

属性说明:
- navigationStart:浏览器处理当前网页的启动时间
- fetchStart:浏览器发起http请求读取文档的毫秒时间戳。
- domainLookupStart:域名查询开始时的时间戳。
- domainLookupEnd:域名查询结束时的时间戳。
- connectStart:http请求开始向服务器发送的时间戳。
- connectEnd:浏览器与服务器连接建立(握手和认证过程结束)的毫秒时间戳。
- requestStart:浏览器向服务器发出http请求时的时间戳。或者开始读取本地缓存时。
- responseStart:浏览器从服务器(或读取本地缓存)收到第一个字节时的时间戳。
- responseEnd:浏览器从服务器收到最后一个字节时的毫秒时间戳。
- domLoading:浏览器开始解析网页DOM结构的时间。
- domInteractive:网页dom树创建完成,开始加载内嵌资源的时间。
- domContentLoadedEventStart:网页DOMContentLoaded事件发生时的时间戳。
- domContentLoadedEventEnd:网页所有需要执行的脚本执行完成时的时间,domReady的时间。
- domComplete:网页dom结构生成时的时间戳。
- loadEventStart:当前网页load事件的回调函数开始执行的时间戳。
- loadEventEnd:当前网页load事件的回调函数结束运行时的时间戳。
性能数据分析
1.DNS寻址时间:t.domainLookupEnd - t.domainLookupStart。
优化方法:检查页面是否添加了DNS预解析代码。
<link rel="dns-prefetch" href="//haitao.nosdn1.127.net">
是否合理利用域名发散与域名收敛的策略。
2.TCP连接耗时:t.connectEnd - t.connectStart。
3 首包时间: t.responseStart - t.navigationStart。
优化方法:是否加cdn,数据可否静态化等。
4.request请求耗时:t.responseEnd - t.requestStart。
优化方法:返回内容是否已经压缩过,静态资源是否打包好等。
5.白屏时间。
白屏时间是最影响用户体验的,时间越久,用户等待就越久。
6.解析DOM树结构的时间:t.domComplete - t.domLoading。
优化方法:检查dom节点是否过多,dom是否嵌套过深。
7.页面加载完成的时间:t.loadEventEnd - t.fetchStart。
优化方法:考虑延迟加载,懒加载,部分加载,减少首屏渲染时间。
方法
performance.getEntries():每个资源请求的时间数据。
performance.now() 计算网页从performance.timing.navigationStart到当前时间的毫秒数。
精确计算某个操作,或某个方法执行的耗时。
var start = performance.now();
dosomething();
var end = performance.now();
var time = end - start;
console.log('耗时' + time + '毫秒。');
或者console.time('aa'),console.timeEnd('aa')计算。
performance.mark()给相应的视点做标记。结合performance.measure()使用也可以算出各个时间段的耗时。
执行下列代码可以查看页面加载各个阶段的耗时。
function getTimes(){
var t = performance.timing;
var timing = {
domainLookupTime: t.domainLookupEnd - t.domainLookupStart,
TCPConnectTime: t.connectEnd - t.connectStart,
ttfb: t.responseStart - t.navigationStart,
requestTime: t.responseEnd - t.requestStart,
waitTime: t.domLoading - t.navigationStart,
renderDomTime: t.domComplete - t.domLoading,
loadPageTime: t.loadEventEnd - t.fetchStart
}
console.log(timing);
}
getTimes();
参考资料:
http://javascript.ruanyifeng.com/bom/performance.html
https://developer.mozilla.org/zh-CN/docs/Web/API/Performance
https://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
http://www.alloyteam.com/2015/09/explore-performance/
利用performance属性查看网页性能的更多相关文章
- 使用performance进行网页性能监控
由于项目需要, 需要对网页的一些性能进行监控, 接触到了performance, window.performance 提供了一组精确的数据,经过简单的计算就能得出一些网页性能数据, 将这些数据存储为 ...
- 【译文】使用webpack提高网页性能优化
这篇文章原文来自https://developers.google.com/web/fundamentals/performance/webpack/. 说是译文其实更像是笔者做的笔记,如有错误之处请 ...
- Performance Monitor1:开始性能监控
Performance Monitor是Windows内置的一个可视化监控工具,能够在OS级别上实时记录系统资源的使用情况,通过收集和存储日志数据,在SQL Server发生异常时,能够还原系统当时的 ...
- 利用DIV+CSS制作网页过程中常用的基本概念及标签使
CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...
- 利用Crowbar抓取网页异步加载的内容 [Python俱乐部]
利用Crowbar抓取网页异步加载的内容 [Python俱乐部] 利用Crowbar抓取网页异步加载的内容 在做 Web 信息提取.数据挖掘的过程中,一个关键步骤就是网页源代码的获取.但是出于各种原因 ...
- 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节
CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...
- http网页性能最佳实践
你愿意为打开一个网页等待多长时间?我一秒也不愿意等.但是事实上大多数网站在响应速度方面都让人失望.现在越来越多的人开始建立自己的网站,博客,你的网页响应速度如何呢?在这篇文章中我们来介绍一下提高网页性 ...
- HTTP/2 服务器推送(Server Push)教程(HTTP/2 协议的主要目的是提高网页性能,配置Nginx和Apache)
HTTP/2 协议的主要目的是提高网页性能. 头信息(header)原来是直接传输文本,现在是压缩后传输.原来是同一个 TCP 连接里面,上一个回应(response)发送完了,服务器才能发送下一个, ...
- 利用@media screen实现网页布局的自适应
利用@media screen实现网页布局的自适应 优点:无需插件和手机主题,对移动设备友好,能够适应各种窗口大小.只需在CSS中添加@media screen属性,根据浏览器宽度判断并输出不同的长宽 ...
随机推荐
- Aptana Studio 3 汉化简体中文版
最近开始学习ruby on rails了,同事推荐我用aptana这个编辑器,它对ror的支持比较好,所以安装了这个软件,但是发现都是英文的,所以在网上看汉化教程,幸亏有高手写过这个文章了,这里我只是 ...
- 简单看看ThreadPool的源码以及从中看出线程间传值的另一种方法
这几天太忙没时间写博客,今天回家就简单的看了下ThreadPool的源码,发现有一个好玩的东西,叫做”执行上下文“,拽名叫做:”ExecutionContext“. 一:ThreadPool的大概流程 ...
- 将一列包含多个ID拆分多行
看到个不常见的问题~然后在 Inner Sql Server2008 里面找到一个思路. 如果下面的表结构,如何拆分多行并对应员工号呢? 首先创建测试表 CREATE TABLE Department ...
- spring定时器(二)
此定时器可重置定时时间. 1. spring的定时器配置文件application.xml: <?xml version="1.0" encoding="UTF-8 ...
- DNS 原理入门
导读 DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识.本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一 ...
- Linux下ejabberd开机自启(CentOS)
废话少说,Linux下开机自启动Ejabberd步骤如下: 1.从ejabberd安装目录的bin目录拷贝ejabberd.init到/etc/init.d/ejabberd下 [root@imser ...
- [转载]利用@media screen实现网页布局的自适应,@media screen and
开始研究响应式web设计,CSS3 Media Queries是入门.Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变内 ...
- 基本开题的感觉是了-MySQL继续继续(自定义函数&存储过程)
hi 感觉论文开题基本确定了,凯森 1.MySQL -----自定义函数----- ----基本 两个必要条件:参数和返回值(两者没有必然联系,参数不一定有,返回一定有) 函数体:合法的SQL语句:以 ...
- java设计模式之适配器模式
说到适配器,我们可能会想到电脑的适配器,没错,其实作用是一样的,电脑的适配器在中国可以使用,在美国也可以使用,它的主要作用是在新接口和老接口之间进行适配..这就是一个适配的过程,适配器模式的类图如下: ...
- 常用的SQL 语句
一.简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ...