web性能优化
2020-01-21 本文已影响0人
卡布i
有服务器,有网站才能做性能优化,需要改网站的后台代码
什么是web性能优化?
用户觉得网站加载快
与前端有关的阶段
用户按下回车之后=>
-
查看缓存
-
DNS 查询
-
建立tcp链接
-
发送HTTP请求
ETag
后台处理 等
-
接受相应
-
接收完成 --> HTML
-
DOCTYPE --> html/xml
-
逐行解析(阅读)
-
看到
<h1>
标签显示(IE,直接渲染,css加载后如果有样式更改再渲染该元素一次)
不显示(chrome,等待所有css下载完毕再渲染)
-
看到css
|__下载css
|__往下看还有没有css
|__下载css
|__往下看还有没有css
... ...
// 浏览器同时下载css个数:
IE6:2个;IE7:4个;IE8+:6个 FireFox,Chrome:6个。
-
看JS
跟css一样 下载并行,解析串行
css会阻塞html吗? 可能会
js会阻塞html吗? 一定会, 必须执行完js后才能看后面的标签
逐项优化
-
DNS 查询
- 减少dns查询,也就是尽量减少域名
-
建立TCP链接
- 利用TCP协议里的连接复用和http/2.0的多路复用
-
发送HTTP请求
-
减少cookie体积
-
使用CacheControl
-
打包js
-
同时发送多个请求 (相同域名有数量限制,可以增加域名.这与之前DNS查询里说的减少域名冲突. 权衡 文件多才增加域名数)
-
-
接受相应
-
使用ETag 服务器如果发现浏览器中的文件已经是最新的,就只响应一个304,浏览器直接复用本地文件. ETag和缓存不同,缓存不发请求,ETag只响应304
-
使用Gzip压缩
命令行Gzip 1.txt
缺点,耗费浏览器性能
-
-
接收完成 --> HTML
-
DOCTYPE
不能写错,不能不写
-
js/css
-
使用CDN
Content Delivery Network内容分发网络
css放在Header里,js放在body后 -
Gzip
-
* 增加域名并发请求
* css放Header(尽早下载),js放body最后(尽早显示页面,获取节点)