performance解读页面性能(chrome)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
performance解读页⾯性能(chrome)
// 计算程序执⾏的精确时间
function getFunctionTimeWithDate (func) {
var timeStart = Date.now();
// 执⾏开始
func();
// 执⾏结束
var timeEnd = Date.now();
// 返回执⾏时间
return (timeEnd - timeStart);
}
function getPerformanceTiming () {
var performance = window.performance;
if (!performance) {
// 当前浏览器不⽀持
console.log('你的浏览器不⽀持 performance 接⼝');
return;
}
var t = performance.timing;
var times = {};
//【重要】页⾯加载完成的时间
//【原因】这⼏乎代表了⽤户等待页⾯可⽤的时间
times.loadPage = t.loadEventEnd - t.navigationStart;
//【重要】解析 DOM 树结构的时间
//【原因】反省下你的 DOM 树嵌套是不是太多了!
times.domReady = t.domComplete - t.responseEnd;
//【重要】重定向的时间
//【原因】拒绝重定向!⽐如,/ 就不该写成
times.redirect = t.redirectEnd - t.redirectStart;
//【重要】DNS 查询时间
//【原因】DNS 预加载做了么?页⾯内是不是使⽤了太多不同的域名导致域名查询的时间太长?
// 可使⽤ HTML5 Prefetch 预查询 DNS ,见:[HTML5 prefetch](/a/1190000000633364)
times.lookupDomain = t.domainLookupEnd - t.domainLookupStart;
//【重要】读取页⾯第⼀个字节的时间
//【原因】这可以理解为⽤户拿到你的资源占⽤的时间,加异地机房了么,加CDN 处理了么?加带宽了么?加 CPU 运算速度了么? // TTFB 即 Time To First Byte 的意思
// 维基百科:https:///wiki/Time_To_First_Byte
times.ttfb = t.responseStart - t.navigationStart;
//【重要】内容加载完成的时间
//【原因】页⾯内容经过 gzip 压缩了么,静态资源 css/js 等压缩了么?
times.request = t.responseEnd - t.requestStart;
//【重要】执⾏ onload 回调函数的时间
//【原因】是否太多不必要的操作都放到 onload 回调函数⾥执⾏了,考虑过延迟加载、按需加载的策略么?
times.loadEvent = t.loadEventEnd - t.loadEventStart;
// DNS 缓存时间
times.appcache = t.domainLookupStart - t.fetchStart;
// 卸载页⾯的时间
times.unloadEvent = t.unloadEventEnd - t.unloadEventStart;
// TCP 建⽴连接完成握⼿的时间
times.connect = t.connectEnd - t.connectStart;
return times;
}
console.log(getFunctionTimeWithDate(getPerformanceTiming));。