web浏览器与网站服务器,Web浏览器如何与Web服务器通信

Web浏览器如何与Web服务器通信  在理解Web优化的必要性之前,要先知道问题根源所在——浏览器和服务器通信方式的基本属性导致了这个问题,如图1-2所示。

c707711305d8fe82380e6cf17362f021.png图1-2 用户向example.com发送请求。用户通过浏览器发送网页请求,然后必须等待服务器响应并发送内容。服务器发送响应后,用户才能在浏览器中接收到网页

当人们说“Web性能的重点是网站加载速度更快”时,他们的主要关注点是缩短加载时间。简言之,加载时间就是从用户请求网站到网站出现在用户屏幕上所经历的时间。其驱动机制也就是从用户请求内容到服务器响应到达用户所消耗的时间。

可以将这个过程想象为:你走进一家咖啡店,点了一杯深度烘焙咖啡,然后稍等片刻,你就可以享用到。从根本上看,点咖啡跟与Web服务器通信并没有什么不同:你请求了某些内容,最后得到了它。

当浏览器请求网页时,它使用一种被称为超文本传输协议(通常称为HTTP)的协议和服务器通信。浏览器发出一个HTTP请求,Web服务器回以一个HTTP响应,响应中包含了状态码和请求的内容。

在图1-3中,你可以看到向example.com发出的一个请求(这个网站是实际存在的,信不信由你)。动词GET要求服务器定位到/index.html。由于HTTP协议有好几个版本,因此服务器需要知道正在使用哪个版本的协议(在本例中是HTTP/1.1)。最后,请求要指明需要哪个主机名的资源。

c619a38f23f51a4a64e9bf91148102a6.png图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的能力如何。

我们所在的这个世界很复杂,所以目前仍需要同时兼容协议的两个版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值