书:Web 性能 权威指南 著Ilya Grigorik
本人旨在自学web性能方面,主要是也看了上面那本书,本人是程序猿一枚看此书只是把重点记录下来,到时候再细研究,
大家一起学习。
一、网络部分
1、延迟与带宽
2、TCP
调整调整TCP初始拥塞窗口大小为10;
禁用空闲后的慢启动;
确保启动窗口缩放;
减少传输冗余数据;
压缩要传输的数据;
把服务器放到离用户近的地方;
尽可能重用已经建立的TCP连接。
3、UDP
与TCP不同的协议,该协议主要是传输速度快,该协议省略了连接状态、握手、重发、重组、重排、拥塞控制、拥塞预防、流量控制、错误检测等。
说了这么多,就是可以理解,只有源地址、目标地址、验证串码和元数据。
因此它简单又快,但是就没有相应的功能。
建议在局域网中使用,或是需要针对没有的功能再开发,具体咋弄就不知道,到时候再研究。、
4、TLS传输层安全
还有SSL等都是加密验证、然后再解密取数据,这中间就多了很多交互过程,也是影响性能一个因素。
性能检查清单
4.1 tls库升级到最新版本,并在此基础构建服务器;
4.2 ssl2.0 会话缓存默认是关闭的,启用并配置缓存大小及会话超时时间;
4.3在接近用户的地方完成tls会话,减少往返的延迟;
4.4配置tls记录的大小,使其恰好能封装在一个tcp段中;
4.5 确保证书链不会超过拥塞窗口的大小;比如,证书链的长度是5K,拥塞窗口大小是60K就没有问题,如果证书链是100K的话,需要多一次往返;
4.6从信任链中去掉不必要的证书,减少链条层次;无用的证书链会加大客户端和服务器的验证时间;
4.7禁用服务器tls的压缩功能,tls压缩会暴漏严重的安全漏洞,而且一般数据都是已经压缩过的,类似于zip压缩后再压缩提升的不明显;
4.8启用服务器对SNI的支持;
4.9启用服务器的OCSP(在线证书状态协议)封套的功能,客户端需要检查证书的有效性,部分浏览器支持,该检查的操作有服务器执行,浏览器跳过在线查询;
4.10追加对HTTP严格传输安全首部。
......中间扒拉一堆移动网络解释,已经完全超出我的理解。过。
10、Web性能要点
延迟、带宽、计算机性能,这些对于Web性能确实有一定的影响,但是相对而言不是主要因素,忽略。
10.1针对浏览器优化的建议
10.1.1基于文档的优化,尽量先加载页面,先保证交互产生;
10.1.2推测性优化,预先解析DNS、预先连接可能的目标。UC浏览器中百度分页下一页就有这功能,不知道是不是一个意思。
10.1.3资源欲取和有限次序
10.1.4DNS预解析
10.1.5TCP欲连接,就是根据10.1.2的需求,将TCP连接欲打开;
10.1.6页面欲渲染某些浏览器,在10.1.2中,在隐藏的标签页中预先渲染整个页面。
11、HTTP1.X
11.0网络优化
11.0.2减少DNS查询
11.0.3减少HTTP请求
11.0.4使用CDN,离用户近的地方
11.0.5添加Expires首部并配置ETag标签
11.0.6Gzip资源,所有文本资源都应该使用Gzip压缩
11.0.7避免HTTP重定向,尤其是一个完全不同的域名会更耗时间
11.1持久化连接
假设页面只有一个html一个css文件,如果不使用持久化连接的话,就需要加载html时,客户端和服务器做一个TCP连接的三次握手,css做一次,然后再传输数据。
如果有TCP连接,就会节省一套握手操作,节约的额时间(N-1)*每次TCP连接的三次握手时间,这种规模在大型网站上相当的明显。
11.2HTTP管道
顾名思义,就是管道越大,一次性传输的东西就越多。但是由于管道的技术有限,应用需要把中断的连接进行重新处理,非常麻烦,目前不建议采用,等HTTP2.0的时候再说吧,但是肯定的是它也是优化的另一个方法,apple itunes就是鲜明的例子。
11.3使用TCP多个连接
HTTP1.X不支持“多路复用”,这个是啥意思?浏览器通过并行打开多个TCP连接,最多6个。
11.4域名分区shar1.example.com shar2.example.com
原理类似于集群,假如一个页面需要加载多个资源,这些资源都指定到一个机器方面,还是将资源分散到若干的服务器上同时加载快,很显然吧,但是肯定会有个临界点。