【协议】【http2】

http1 做了哪些优化

  • 存在什么问题:http1 没有持久的tcp 连接,访问一个网页(html jpg css js 等资源)需要建立多个tcp 连接 访问资源,每次请求都会导致两次往返延迟(tcp握手和挥手)
    如何解决的

  • 优化1:keep-alive:长连接,一个tcp 连接可以复用,消除另一次tcp 慢启动的往返

  • 优化2 http1.1 pipling: 管道话的方式,由客户端浏览器决定,优先访问一些资源,管道化,c端可以同时发送多个请求到s,s 同时处理两个请求的资源,但是s按照请求先来后到把资源返回c,如果第一个请求资源阻塞住了,后面所有的请求都被阻塞。

  • 管道化夭折的原因:只是解决了,请求发送的并行,没有解决响应的并行化。

    • 1 只能严格按照请求顺序串行返回响应,不允许响应交错到达
    • 2 如果第一个请求阻塞了,并行发送的后边的所有请求都会阻塞。
    • 3 服务端pipeline 需要缓存资源,服务端并行处理请求资源,但是串行返回资源,前边的资源没返回给c的时候,剩下的资源需要s 自己缓存,服务端资源占用太多。
    • 4 并行的几个请求中如果前边的 请求断连了,那么即使s 处理了剩余的并行请求的资源,c也hui重新发送所有的http 请求,造成s重复处理。
    • 5 中间如果存在代理,若代理不支持管道,代理会拒绝这个http 请求或者,导致http 请求的串行化。
  • 疑问: tcp 慢启动需要再了解,tcp 连接建立的时候 tcp 窗口是一点一点的变化,最终到一个合适的窗口大小,tcp的启动整个过程非常慢

  • 优化3 大多数浏览器 为每个域名打开6-8个连接,为了突破,6个连接的限制,会切分子域名提供静态资源。资源消耗比较多(客户端需要和每个域名建立tcp 请求)

  • 多域名的缺点
    针对那么多tcp 连接,c 和s 都是有额外开销
    每个tcp 连接都要经过建立tcp 连接,慢启动阶段
    页面加载完之后,tcp 连接大多数都用不到了,(74%的连接仅仅处理一次请求),资源消耗。整体的效率低

  • 优化4 资源组合,比如把多个 js css 合并成一个文件,达到建立更少的连接的目的 ;拼接:多张图片合为一张更大的图片(sprite图)

  • 优化5 嵌入资源:为了减少下载次数,直接嵌入到网页里边。维护成本还是有点高

现在很多网站都已经启动了http2 了,如何禁掉,命令行启动浏览器,加参数 --disable-http2

http2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值