一个web页面加载有很多图片、js、CSS文件,那么如何保证一个页面能够被快速加载?

  1. 要明白这个问题,首先要理解下面几个问题:
  • 浏览器与服务器建立TCP连接后,是否会在一个HTTP请求完成后断开?
  • 一个TCP连接可以发送几个HTTP请求?
  • 一个TCP连接可以同时发送多个请求吗?
  • 为什么有时候页面刷新不需要重新建立SSL连接?
  • 浏览器对同一个HOST建立TCP连接有没有限制?

浏览器与服务器建立TCP连接后,是否会在一个HTTP请求完成后断开?

在Http/1.0中,一个服务器发送完HTTP相应之后会断开TCP连接,但是一个web页面中会发送很多个http请求,每次这样请求都会重新建立和断开TCP连接,开销过大。所以http/1.1就开始支持持久连接,即:浏览器和服务器之间建立的TCP连接会维持一段时间,不会一个请求结束就断开。

一个TCP连接可以发送多少个HTTP请求?

根据第一个问题可以看出,一个TCP连接是可以发送很多个http请求的。

一个TCP连接可以同时发送多个请求吗?

  在HTTP/1.1中是不可以的。因为HTTP/1.1是一个文本协议,同时返回多个内容不能区分对应于哪个发送的请求。所以顺序必须要求维持一致。   在HTTP/2.0中提供了Multiplexing多路传输特性,可以在一个TCP连接中同时完成多个HTTP请求。

那么在HTTP/1.1中是如何提高传输效率的?主要由以下两点:

  1. 维持已经建立的TCP连接,在同一个连接上按照顺序处理多个请求。
  2. 增加TCP连接数。

为什么有时候页面刷新不需要重新建立SSL连接?

因为TCP连接会维持一段时间,TCP不需要重新建立连接,所以SSL就直接用之前的。

浏览器对同一个HOST建立TCP连接有没有限制?

假如在HTTP1.1时代,没有多路传输,一个web页面中包含了很多张图片资源的网页,如果只有一个TCP连接顺序下载,用户会等很久。所以可以开启多个TCP连接进行传输,连接数会有限制,因为TCP连接数过多会消耗系统资源。Chrome最多允许6个TCP连接,不同的浏览器有所区别。

最后

回到最开始的问题:一个web页面加载有很多图片、js、CSS文件,那么如何保证一个页面能够被快速加载?   如果图片在同一个域名并且都是HTTPS连接,那么浏览器在SSL握手之后,会和服务协商是否能用HTTP2,如果能用就使用Mutiplexing功能在这个连接上进行多路传输。不过也未必所有挂载这个域名的资源都会用同一个TCP连接获取。但是可以保证Mutiplexing很可能会被用到。

  如果用不了HTTPS,或者用不了http2,那么浏览器就回在一个Host上建立多个tcp连接,连接数的最大请求限制取决于浏览器设置。每个TCP连接上发送多个http请求。如果所有连接都在发送请求,其他 的请求就只能等待。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值