记录性能优化相关的知识。html
DOMContentLoaded:
DOM树构建完成的时间Load:
页面加载完毕。即DOM树构建完成后,加载完图片等外部资源的时间Finish:
是页面上全部 HTTP 请求发送到响应完成的时间算法
根据 HTTP 请求的不一样阶段来进行排序segmentfault
Start Time:
请求开始的时间Response Time:
资源开始下载的时间End Time:
请求结束的时间Total Duration:
请求整个完整过程的时间Latency
请求等待响应的时间浏览器
以下图所示,Waterfall 右键以后选择 Total Duration,则请求按照整个持续时间排序,不一样的颜色表明不一样的资源文件,浅色的部分表明资源的等待时间,深色的部分表明下载时间。缓存
图片优化的几种方式:性能优化
CSS Sprite 和 BASE64 的对比网络
各个类型图片的对比dom
defer 属性:
渲染 DOM 的过程将和 JS 脚本加载的过程异步进行,可是 JS 脚本的执行要在全部元素解析完成以后(只适用于外部脚本文件)async 属性:
加载和渲染 DOM 的过程将和 JS 脚本的加载与执行的过程异步进行(只适用于外部脚本文件)具体区别见下图:异步
绿色线表明 HTML 解析;蓝色线表明 JS 脚本读取时间;红色线表明 JS 脚本执行时间。async
preload 提供了一种声明式的命令,让浏览器提早加载指定资源(加载后并不执行),在须要执行的时
候再执行。
使用:
prefetch: 告诉浏览器将来可能会使用到的某个资源,浏览器就会在闲时去加载对应的资源。
使用:
Brotli 压缩算法具备多个特色,最典型的是如下 3 个:
默认状况下浏览器会对页面中和当前域名不在同一个域的域名进行预获取,而且缓存,这就是隐式的 DNS Prefetch。若是想对页面中没有出现的域进行预获取,那么就要使用显示的 DNS Prefetch 。
DNS 预解析
是浏览器试图在用户访问连接以前解析域名,若是一个页面有多个域名的连接,DNS 预解析
会在用户点击连接以前,使用最少的CPU和网络在后台进行解析。当用户点击已经预解析的域名时,能够平均减小 200 ms 的等待时间,提高用户体验 。
<meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="//domain.com">
https://segmentfault.com/a/11...
DNS预解析: https://www.cnblogs.com/golov...