网络层面优化
由资源文件请求的时间线 Timing 分析
例子
一个文件请求的时间线例如: 
Queuing 就是排队时间,造成排队的原因:
- 资源优先级,比如html,css,js的优先级高于图片
- http 1.1 浏览器为每个域名最多维护6个TCP连接
- 发请求的时候正在进行磁盘空间分配
Stalled 就是请求被挂起或者说停滞
Initial connection 就是建立连接的时间
SSL 就是 SSL握手时间
Request time 就是请求时间
Waiting for server response 就是等待响应的时间
Content download 就是下载内容时间
优化思路
解决排队时间就是:
- 域名分片技术,一个站点使用多个域名,那样就可以超过6个TCP连接了
- 升级http2.0,http2.0可以同时建立多个TCP连接,从而解决排队时间
响应时间优化:
- 静态资源缓存,压缩,合并,CDN,减小静态资源大小(去除注释,log等)
- 去除无关 Cookie
- 服务器带宽升级
- 后端优化,SQL查询,逻辑处理
升级http
升级到 2.0,主要原因是http 1.1 会有6个TCP连接限制,而2.0有多路复用,只需要建立一个TCP连接。
3.0 的独特优势
http1和2都使用的TCP协议,有队头阻塞的问题,而http3.0使用了基于 UDP 的 QUIC 协议,可以保证可靠传输,支持流量控制,多路复用,TLS1.3加密,没有队头阻塞问题。
队头阻塞是由于TCP传输过程中发生丢包,需要重新发送,而造成数据接收延迟,因为数据是按顺序传输的, 如果一段完整的数据被丢包,那么后面的数据就会因为队头阻塞而延迟接收。 根据测试如果丢包率超过2%,那么http2.0性能会比http1.1性能差。因为http1.1最多有6个TCP连接,阻塞了一个其它的还能用,而http2.0只有一个TCP连接。
但是 http3.0 没有普及,原因是浏览器等软件支持不够完善,系统内核兼容不够好,网络中间传输设备优化不够好导致丢包率高。