常见的有4种方法:Performance Timing API, Profile工具,页面埋点计时,资源加载时序图分析.
包括:DOM树耗时、load事件耗时、整个加载过程耗时.
var domReadyTime = timing.domComplete - timing.domInteractive;
var loadEventTime = timing.loadEventEnd - timing.loadEventStart;
var loadTime = timing.loadEventEnd - timing.navigationStart;
可以使用console.profile()和console.profileEnd()分析,示例代码如下:
console.profile();
// TODOS, 需要测试的页面逻辑动作
for (let i = 0; i < 100000; i++) {
console.log(i * 2);
}
console.profileEnd();
-
http请求方面: 减少请求数量,请求体积,对应的做法是,对项目资源进行压缩,控制项目资源的dns解析在2到4个域名,提取公告的样式,公共的组件,雪碧图,缓存资源;
-
压缩资源,提供公共资源压缩,提取css,js公共方法;
-
不要缩放图片,使用雪碧图,使用字体图标(阿里矢量图库);
-
使用CDN,抛开无用的cookie
-
减少重绘重排,css属性读写分离,最好不要用js修改样式,dom离线更新,渲染前指定图片的大小;
-
js代码层面的优化,减少对字符串的计算,合理使用闭包,首屏的js资源加载放在最底部.