快呗,还能有啥。javascript
蓝色是dom加载结束的时间,红色是页面上全部的资源加载成功的时间css
保存加载完成的结果html
First Contentful Paint: 不是白屏的时间前端
Speed Index >4就是慢 <4就是快java
Speed Index TTFB 页面加载时间 首次渲染
这个工具能够监听渲染的帧数node
一流公司作标准,Google写的标准react
Response : 响应,是咱们的网站给用户的反馈,google给出的响应在50ms以内完成。
Animation:10ms 以内产生一帧动画
Idle 空闲,尽量的增长空闲,尽可能让后端去计算
Load 加载,在5s内完成加载并能够进行交互webpack
花里胡哨,很高级的样子。git
Chrome DevTools 开发调试、性能评测
Lighthouse 网站总体质量评估
WebPageTest 多测试地点、全面性能报告 连接在此github
先安装docker。
同理,建立agent的镜像
javascript
(引发视觉的变化,js,css,动画)->style
(从新对视觉进行计算)->layout
(布局)->paint
(绘制)->Composite
(合成,相似ps)
写的代码是文本,计算机是不能理解的。须要转换成计算机可以理解的数据结构。
以html的dom结构为例,识别标记,转换成链式结构。
构建DOM对象:HTML->DOM
而后挂载CSS
构建CSSOM对象:CSS-CSSOM
二者,结合,生成Render Tree。
布局关心位置和大小
避免回流
读写分离,
复合线程(compositor thread)与图层(layers)
录制样式。
command + P
打开工具,检查重绘
Paint flashing
闪瞎狗眼
使用tansform,op减小repaint
只影响复合而不去触发布局和绘制。
willChange 不可过多。
# 3-6 高频事件防抖[解救页面卡顿]
滚动
touch
poinermove
触发的频率高于刷新的频率
window.requestAnimationFrame
官方连接在此
window.requestAnimationFrame()
告诉浏览器——你但愿执行一个动画,而且要求浏览器在下次重绘以前调用指定的回调函数更新动画。该方法须要传入一个回调函数做为参数,该回调函数会在浏览器下一次重绘以前执行
包上一层函数就能去抖动,达到一帧只触发一次的目的。
在字体,html,图片这些资源当中,最为昂贵的是JavaScript。它后面还有解析和编译的过程。最后才是执行.
一样170kb的文件,js的文件解析须要大约2秒,jpg只须要解码,大概0.06秒,绘制的总过程0.028s.
js处理的时间大概须要占三分之一。就算用户可以看到咱们的页面,也没办法交互。
当前访问路径须要哪些资源就加载哪些资源,不须要的咱们给它延迟,访问的时候再去加载。达到减小加载js的目的
举例来讲,咱们只是引用了loadsh里面的一个函数,就能够把这一个函数打包到bundle文件中。
任务时间越长,占据的阻塞越久
写行间脚本多是为了加快首屏的渲染。剩下的再经过web文件进行加载。
对于行间脚本,浏览器不能进行优化。
具体看上一章。
node用v8引擎
v8会对代码进行优化,发现优化的不行了呢,还会反向优化,就会浪费不少时间。
源码=》抽象语法树=》字节码Bytecode=》机器码
编译过程会进行优化
运行时可能会发生反优化
检查超过30kb的脚本,就认为问价已经足够大,会单独开一个线程进行解析。
常用的变量进行缓存
主要针对于函数,先声明可是不解析。
懒解析的好处,若是不须要解析,那就不用在“堆”里面分配内存,不用为它建立一个语法树。能够提升咱们加载js的一个总体的效率。
可是现实中,咱们有时候仍是须要咱们的函数当即去执行的。
假如咱们先进行懒解析,而后发现须要当即执行,还须要一个eager parseing,这样反而性能减半。
那么,咱们怎样告诉解析器,咱们须要进行eager parseing?
上面添加的括号会在压缩的时候被去掉,可是Optimize会帮咱们把括号找回来。
可是如今webpack4已经本身可以实现这个功能。(老师讲话真是喜欢大喘气)。
学习js对象,就像是练习内功。学习得好很差,就看你对对象学习的程度。
这些写法的目的就是为了迎合V8引擎对你的代码进行优化。
至关于多加了一个文档。父级文档要等它。
嵌套越深,遍历越慢
已经out
何时写在行间?
首屏优化
好比,ul里面的li
总结:html的优化占比较少,为了把优化作到极致,能够关注上面几点,可是webpack集成了这样的功能。(html-minifile)
解析css,会自右向左去读,先找出全部的a标签,而后再找出第二个条件进行过滤。
告诉浏览器,我和外面的不要紧,只对我里面的元素进行更改,不用进行回流,布局的从新计算。
在页面上先展现文字,减轻文字闪动的问题
减小http请求量
减少http请求资源的大小
(谷歌就没压缩,由于在别的方面作得更好)
js压缩与混淆,大部分时候都是使用webpack在构建时进行压缩。
有的人认为合并比较好,有的人认为拆分比较好。在网络上加载比较快。
总结就是同一模块的小文件,ok的,由于如今都是渐进式加载。单纯的为了优化,减小http请求,会影响用户体验。
imagemin 对jpg图片本身压缩
使用场景,图片比较大,还想要尽可能保存画质。
当图片有比较多的纹理和边缘,就不太合适,由于压缩比较高,会有锯齿感。
色彩上不相上下
logo,纹理。
大
谷歌新推出的图片格式
色彩上与JPG不相上下,可是压缩比更高。
支持webp的浏览器。
<img loading="lazy" src="http://,,,,">
连接在此(react-lazy-load-image-component)verlok/lazyload
,yall.js
,Blazy
横扫描的方式
渐进式图片
刚开始就能看到图片的全貌,用户体验更好
适配。
刚开始只会加载一张图片,srcset
里面是不一样尺寸的图片。会根据窗口的大小加载相应大小的图片。
什么是FOIT ?什么是Fout?
字体闪动不可避免。
font-display:auto|block|swap|fallback|optional // block // swap 替换的字体 不会白屏,可是很差看 // fallback 100ms 提早下载完,下载完以前不显示; 还没下载完,我就替换 // optional 手机端优化,可以判断网速,不佳,默认字体,可是默认字体设置上,就不退了
@font-face{ unicode- }