基本知识
1.HTTP版本
HTTP 1
HTTP /1.1 新特性:缓存处理,持续连接,ect.
HTTP /2 新特性:减小网络延迟,简化服务器向浏览器传输内容的过程,ect
2.用户代理 User Agent
指一串字符,表明当前用户使用什么样的代理在访问站点。 浏览器是最常见的一种UA。
Web优化:浏览器端,服务器端,前后端交集
Web优化-前端视角的HTTP
通过Http Watch/Fiddler查看站点的HTTP请求信息,进行基本的优化:尽量减少同一域下的HTTP请求数,以及减少每一个资源的体积。
HTTP请求数最大化利用
当浏览器在用完了当前连接之后,对某个域需要进行更多的连接,则重复使用或者重新建立新的连接。
1.并发连接数限制。(是并行进程,通过时间共享共同使用存储器和处理器,进程的生成/销毁/切换增加负载)
应对:将静态资源放在非主域名的其他域名下(不同子域名也被认为是不同的域名)。
由于:并发连接数限制是浏览器针对资源的域名限制,而不是针对浏览器地址栏中的页面域名。
缺点:服务器压力变大。
优点:减少HTTP请求中携带的不必要的cookie数据。cookie的作用域是整个域名,在此域名下的所有HTTP请求都会带上cookie数据。
2.合并同一域名下的资源。例如将多个CSS合并为一个CSS,或者将图片组合为CSS贴图。
3.省掉不必要的HTTP请求。比如:内嵌小型CSS/JavaScript、设置缓存、减少定向, etc.
减少每个资源的体积
减少流量,进而缩短等待时间。
1.选择合理的文件格式。例如:合适的图片格式,更小的体积达到更好的显示效果。
2.压缩。对于较大的文本资源,gzip压缩,对含有“重复单词”的文本压缩率很高。
Web优化-后台视角的HTTP
让服务器尽快响应请求,以及减少请求对服务器的开销。
提高服务器的请求处理能力
Ngnix:处理前端高并发。原理:处理请求时异步非阻塞型的。Node.js同类。
Apache:处理后台请求。原理:处理请求是阻塞型的。
MPM多处理模块设置:prefork:进程维持连接(稳定,消耗资源多);worker:线程维持连接(不稳定,占内存少),适合高http请求的服务器。
DDos攻击 Distributed Denial of Service
DDos攻击客户端,不限制http并发连接数,允许自由设置TCP/IP并发数,在连上服务器后保持连接,直到连接数大于最大连接数。
包括:CC \ SYN \ NTP \ TCP \ DNS, ect.
应对:
1.增加贷款,提高服务器最大连接数。
2.首页静态化。
原理:静态资源对服务器压力小,还可以部署在CDN上。(TCP/IP攻击)
常受攻击的时候页面会对数据库进行写操作的页面,因为无法静态化,易于使服务器宕机。(TCP/IP攻击)
前后端交集:BigPipe
传输分三个部分:服务器的页面生成,网络传输,浏览器的页面渲染。
1.TCP/IP协议
http协议的底层是TCP/IP,需要三次握手才建立连接。
新增请求需要重新建立TCP/IP连接。
2.现有阻塞模型的缺陷
阻塞模型,需要100%完成相应环节才进入下一环节。
非阻塞式模型:借助http /1.1分块传输编码,允许服务器动态生成的内容维持http持久连接,在传输期间连接保持不断开。
BIgPipe首先传输框架,然后按优先级传输不同区域内容,浏览器分块渲染。最后一块的标记为0,可传输不确定数量的块。
用户体验好。
http /2 允许服务器在没有相应请求的时候,主动向浏览器推送它认为浏览器应该需要的内容,减少了等待浏览器接收并解析完才请求下载的时间。
允许后面的请求复用之前建立的底层连接。