协议概述

超文本传输协议(HyperText Transfer Protocol)缩写为HTTP,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

标准制定

HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调, HTTP/2是HTTP协议自1999年HTTP 1.1发布后的首个更新,互联网工程任务组(IETF)已经于2015年5月正式发表HTTP/2标准。

请求响应模式

HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系,它通常承载于TCP协议之上,有时也承载于TLS协议层之上,这个时候,就成了我们常说的HTTPS。

HTTP/2

HTTP/2和HTTP/1.x之间存在很大的差异,但以下优化规则是仍然是通用的:

  1. 优化DNS查询,若没有resolved的域名会阻塞请求;
  2. 优化TCP连接,HTTP/2只使用一个TCP连接;
  3. 避免重定向,特别是非同一域名的重定向,需要DNS、TCP、HTTP/TLS的开销;
  4. 客户端缓存是有必要的;
  5. 使用CDN等网络边缘的缓存,分发资源,减少延迟;
  6. 使用条件缓存减少流量的传输;
  7. 压缩传输的数据,gzip压缩很高效;
  8. 消除不必要的资源和数据请求,激进的提前获取资源,在某种程度上,对客户端和服务端的开销都比较大;
  9. 针对图片采取优化措施;
  10. 不断的性能测试与监控;