阿里云服务器ECS    
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新 [咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本 [咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案 [咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中 [咨询更多]
阿里云折扣优惠    
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣 [咨询更多]
Web浏览器如何与Web服务器通信
2020-9-16    点击量:
  Web浏览器如何与Web服务器通信  在理解Web优化的必要性之前,要先知道问题根源所在——浏览器和服务器通信方式的基本属性导致了这个问题,如图1-2所示。
 用户向example.com发送请求 
  图1-2 用户向example.com发送请求。用户通过浏览器发送网页请求,然后必须等待服务器响应并发送内容。服务器发送响应后,用户才能在浏览器中接收到网页
  
  当人们说“Web性能的重点是网站加载速度更快”时,他们的主要关注点是缩短加载时间。简言之,加载时间就是从用户请求网站到网站出现在用户屏幕上所经历的时间。其驱动机制也就是从用户请求内容到服务器响应到达用户所消耗的时间。
  
  可以将这个过程想象为:你走进一家咖啡店,点了一杯深度烘焙咖啡,然后稍等片刻,你就可以享用到。从根本上看,点咖啡跟与Web服务器通信并没有什么不同:你请求了某些内容,最后得到了它。
  
  当浏览器请求网页时,它使用一种被称为超文本传输协议(通常称为HTTP)的协议和服务器通信。浏览器发出一个HTTP请求,Web服务器回以一个HTTP响应,响应中包含了状态码和请求的内容。
  
  在图1-3中,你可以看到向example.com发出的一个请求(这个网站是实际存在的,信不信由你)。动词GET要求服务器定位到/index.html。由于HTTP协议有好几个版本,因此服务器需要知道正在使用哪个版本的协议(在本例中是HTTP/1.1)。最后,请求要指明需要哪个主机名的资源。
  Web浏览器如何与Web服务器通信
  图1-3 剖析对example.com的HTTP请求
  
  发出请求后,会收到一个200 OK的响应码,这个响应码确认了请求的资源确实存在,且响应中还包含了index.html的内容。随后,Web浏览器会下载并解析index.html的内容。
  
  上述所有步骤都会产生所谓的延迟:包括等待请求到达Web服务器所花费的时间、Web服务器汇集和发送响应内容所花费的时间,以及Web浏览器下载响应内容的时间。提高性能的主要目的之一就是减少延迟,即减少响应到达客户端所需要的时间。当单个请求(例如示例中的example.com)发生延迟时,产生的影响可能微不足道。但实际上,加载任何一个网站都不仅仅是对单个内容的请求。随着这些请求数量的增加,用户体验越来越容易受到加载速度变慢的影响。
  
  在HTTP/1服务器和浏览器的通信中,可能会出现一种被称为队头阻塞(head-of-line blocking)的现象。之所以会发生这种情况,是因为浏览器限制了单一时间点内发出的请求数(通常是6个)。当一个或者多个请求正在处理,而其余请求已完成时,对内容的新请求将会被阻塞,直到原先剩余的请求完成为止。这种行为会增加页面的加载时间。
  
  HTTP/2是HTTP的一个新版本,它在很大程度上解决了队头阻塞问题,并在浏览器中得到了广泛支持。服务器端的职责是支持协议实现,然而直至2017年6月,大约15%的Web服务器使用了HTTP/21。由于HTTP/2能够使不支持HTTP/2的客户端回退到HTTP/1,因此,仅支持HTTP/1的客户端仍然容易受到旧版本协议的影响。此外,任何与HTTP/1服务器通信的浏览器都会遇到相同的问题,不管其支持HTTP/2的能力如何。
  
  我们所在的这个世界很复杂,所以目前仍需要同时兼容协议的两个版本。
联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠