zoukankan      html  css  js  c++  java
  • iOS性能之HTTP2.0

    在移动互联网领域蓬勃发展的今天,APP的性能也成为各大公司重点关注的方向,该系列文章主要针对iOS的性能的几个方面做一些研究。

    • 什么是HTTP2.0?

    网上很容易搜到关于HTTP2.0的概念的文章,这里不再累述。

    苹果从iOS9开始支持HTTP2.0,对iOS开发人员来说,即是iOS9开始,NSURLSession可以支持HTTP2.0

    因为苹果已经打算废弃NSURLConnection,所以NSURLConnection不能支持HTTP2.0

    UIWebView也不能支持HTTP2.0(当然,如果你使用UIWebView,然后使用NSURLProtocol,在NSURLProtocol中使用NSURLSession,这样也是可以支持HTTP2.0的),WKWebView是可以的。

    • HTTP2.0相对HTTP1.1的优势是什么?

    主要有几点:

    1. 相同的Host占用一个TCP链接

    2. 请求可以设置优先级

    3. 采用二进制协议,而不是之前的文本协议

    4. 多路复用

    5. 部压缩

     

    这几点优势里面,我个人认为最为重要的,就是多路复用头部压缩,正是这两项优势,让请求的性能得到了极大的提升。

    • 多路复用

    什么是多路复用呢?在HTTP1.1时代,一个TCP链接可以发送多个请求,但是需要排队,一个一个的发送(遵循FIFO的原则),这就很容易产生阻塞(传说中的head-of-line blocking),如下图:

     

    可以看到,相同的connectionId里面的多个请求,都是串行的(Timeline-Start time那一栏),所以,一旦有某个请求阻塞了,后面的请求都不能继续进行。

    到了HTTP2.0,在一个TCP链接中,请求不再需要排队,而是轮询发送的,如下图:

     

    相同的connectionid里面的多个请求,几乎都是同时发起的(可以想象成单CPU,多线程的CPU轮询机制),这样性能就得到了极大提高

    • 头部压缩

    这个概念比较好理解,现在APP的需求也是越来越复杂,导致了请求的头部信息也越来越多(Cookie,请求参数等),动辄超过1k,2k,十分影响性能。而HTTP2.0会对请求头和响应头做压缩以提升请求性能。

    • 什么是TCP链接?

    前面有提到HTTP2.0对于一个Host会占用一个TCP链接,这里需要简单介绍下TCP链接。

    从底到高来看:

    IP协议:对应于网络层

    TCP协议:对应于传输层

    HTTP协议:对应于应用层

     

    TCP在建立链接的过程中,需要经过三次握手, HTTP协议是建立在TCP协议之上的,不过HTTP是短链接,一旦请求结束,链接要被释放,但是为了提升服务端于客户端之间请求的效率(减少TCP建立链接的性能损耗),所以虽然HTTP链接被释放了,但是底层TCP链接还在(可以用wireshark抓包看看)。

    但是TCP链接也不是无限多,iOS的NSURLSession是分配的4个TCP链接,MAC是6个。

     

    这里有两篇比较全面的HTTP2.0的文章:

    https://medium.com/apps-and-networking/http-2-makes-media-loading-3-15-times-faster-on-mobile-a455c3e68135#.kxd9z7eq4

     

    http://www.floriangoessler.de/ios/2015/08/30/HTTP2-on-iOS.html

  • 相关阅读:
    【poj 1087 a plug for UNIX】
    收集 数据库的awr数据,生成报告
    power desinger 学习笔记三<批量执行sql语句>
    power desinger 学习笔记<二>
    power desinger 学习笔记<一>
    oracle中不曾熟悉的 to_char、to_number(未完待续)
    oracle 报错 :ORA-04052、 ORA-00604、 ORA-03106、 ORA-02063
    谈谈oracle中的临时表
    Oracle-在线重定义操作文档
    分享最近和同事处理的 解析XML的相关问题
  • 原文地址:https://www.cnblogs.com/lizheng114/p/6543809.html
Copyright © 2011-2022 走看看