超文本传输协议( 四 )


我们先考虑为什么减少 HTTP 请求可以优化性能:
1、减少 DNS 请求所耗费的时间且不说对错,因为从基本来说,减少 HTTP 请求数的确可以减少 DNS 请求和解析耗费的时间;
2、减少服务器压力这个通常是被考虑最多的,也是我用来讲解给别人听的最大理由,因为每个 HTTP 请求都会耗费服务器资源,特别是一些需要计算合并等操作的服务器,耗费服务器的 CPU 资源可不是开玩笑的事情,硬盘可以用钱买来,CPU 资源可就没那么廉价了;
3、减少 HTTP 请求头,当我们对服务器发起一个请求的时候,我们会携带着这个域名下的 Cookie 和一些其他的信息在 HTTP 头部里,然后服务器响应请求的时候也会带回一些 Cookie 之类的头部信息,这些信息有的时候会很大,在这种请求和响应的时候会影响带宽性能;
DNS 请求和解析简单来说,例如:www.taobao.com 这样一个 URL,其中 www 部分被称为主机名(hostname),taobao 这部分则是二级域,com 则是一级域,如果是这样一个网址:www.ali.tao.com 那么 ali 就是三级域 。
当我们去请求一个 URL 的时候,首先会到本地服务器里去寻找缓存中是否有解析结果,如果没有解析结果就去根域名服务器请求,根域名服务器返回给本地域名服务器一个所查询的域的主域名服务器的 IP 地址,然后我们再去请求刚才返回的 IP 地址的域名服务器,然后返回下一级域名的 IP 地址,直到我们找到域名中所指的服务器 IP,然后将结果缓存起来供下次使用并返回此结果 。
一个第一次请求的 URL 的 DNS 解析过程可能耗费是很高的,但是解析一次之后结果就会被缓存起来,之后再请求的时候就不用走上面这一套复杂的解析过程了 。
减少服务器压力过多的 HTTP 请求对于服务器来说是很危险的,如果你的服务器不是很强,请把这一条考虑放在第一位,其他的优化策略都只是优化,而这里涉及到的是服务器,你要保证你的服务器能正常运转 。
但是这是淘宝网,我们有足够的速度来提供足够的用户体验 。如果你的服务器提供不了这种速度,也承受不了这种频繁的异步请求的话,这种优化就要慎重了,延迟可能造成导航不可用,这也是针对场景来协调的 。
淘宝现在在广泛部署 CDN,CDN 可以给我们提供足够的后台资源保障,在 CDN 和后台环境不断完善的情况下,考虑重点应该更加专注于前台传输速度和展现解析速度的提升 。
减少 HTTP 请求头HTTP 头是个庞大的家伙,你打开 taobao.com 的首页,alert 一下 document.cookie,会发现淘宝网的 cookie 比较大,每次你请求淘宝的服务器都会往返一次这些数据,还有一些其他的头部信息,占用的空间也不小,可想而知这种消耗有多大 。
然后其实自从用了 CDN,这一切都无需考虑太多,因为 CDN 和淘宝主站不在一个域名下,cookie 不会互相污染,而 CDN 的域名下基本是没有 cookie 和头部信息的,所以每次请求静态资源的时候,不会带着主站的 cookie 到处跑,而只是传输资源的主题内容,所以这对于性能的影响在使用 cdn 之后会变得很小 。但是如果你的静态资源服务器和主服务器在一个域名下,那就要控制好 cookie 和其他头部信息的大小了,因为每次传送都会传送它们 。


超文本传输协议

文章插图
文章插图

总结我们这次针对于网络协议 HTTP 和 HTTPS 有了一个初步的了解,了解了 HTTP 的优缺点,正是由于 HTTP 的某些不足,才出现了 HTTPS,我们通过图例了解了其工作原理,还是比较复杂的,需要进一步的理解加深,然后我们谈到了 HTTP 性能能调优,关于减少请求次数,减少服务器压力等等;

经验总结扩展阅读