HTTP

29 阅读2分钟
  1. Http1.0:tcp是短链接,连接成功使用后,就断开连接(每次建立连接需要花费时间,造成延迟)

  2. HTTP1.1:长连接:一个TCP连接上可以传送多个HTTP请求和响应

  3. HTTP2.0:长连接+多路复用

    • 多路复用:在一个TCP连接上,多个HTTP请求可以并行发送(在HTTP1.1中http请求必须等上一个请求完成后,才能发送)
    • header压缩:HTTP1.x中的头部带有大量的信息,每次都要重复发送。HTTP2.0使用encoder减少需要传输的header的大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。 (HTTP2.0可以维护一个字典,差量更新HTTP头部)
    • 服务端推送: 服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。服务端可以主动发起一些数据推送。比如,服务端在接收到浏览器发来的 HTML 请求的同时,可以主动推送相关的资源文件(js/css)给客户端,并行发送,提高网页的传输和渲染效率。
    • HTTP1.x 的解析是基于文本,存在解析上的缺陷;而 HTTP2.0 直接使用二进制的解析方式来替代 HTTP 1.X 的字符串解析,更为高效和健壮。
  4. HTTP性能优化:

    • 合理使用 HTTP 的缓存策略,避免同一资源多次请求服务端而导致的额外性能开销
    • 尽量使用 HTTP 长连接,避免每次重建 TCP 连接带来的时间损耗
    • 尽量使用 HTTPS 来保证网络传输的安全性。
    • 可以使用 HTTP2 来大幅提高数据传输的效率,使用 server push 开启 HTTP2 的服务端推送功能
    • 客户端开启 Accept-Encoding 压缩方式的支持,服务端传输压缩后的文件,减少传输数据的大小
  5. HTTP和HTTPS

    • 加密:Https相比于http,增加了SSL加密解密数据的过程。http明文传输
    • 端口:http端口是80,https端口是443
    • 防劫持