HTTP1.0 HTTP 1.1主要区别


长连接


HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。

HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用个长连接来发多个请求。


节约带宽


HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接受到100,才开始把请求body发送到服务器。

这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。

另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。


HOST域


现在可以web server例如tomat,设置虚拟站点是非常常见的,也即是说,web server上的多个虚拟站点可以共享同一个ip和端口。

HTTP1.0是没有host域的,HTTP1.1才支持这个参数。


HTTP1.1 HTTP 2.0主要区别


多路复用


HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。

当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

TCP连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一个建立好的连接,并且这个连接可以支持瞬时并发的请求。

关于多路复用,可以参看学习NIO 。


数据压缩


HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。


服务器推送


意思是说,当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。

服务器端推送的这些资源其实存在客户端的某处地方,客户端直接从本地加载这些资源就可以了,不用走网络,速度自然是快很多的。

最新文章

  1. Unbroken(坚不可摧)——Mateusz M
  2. MongoDB学习笔记~MongoVUE对数据进行查询,排序和按需显示
  3. NumberPicker设置宽度,设置文字颜色
  4. postgresql运维
  5. swift学习笔记之-闭包
  6. Linux服务和运行级别科普
  7. 一个最简html5文档来说明html5的新特性和写法
  8. 5月18日:top10面试算法-LRUcache的实现
  9. CentOS 中PHP开启 GD功能
  10. Python 的格式化字符串format函数
  11. scanf(),gets(),gechar()函数小结
  12. BZOJ 2190 仪仗队
  13. 强大的Mockito测试框架(转)
  14. Linux网络编程——连接和面向连接的协议之间没有区别
  15. c#有关udp可靠传输(包传输数据包) 升级
  16. Django 分类标签查找
  17. Hanlp学习笔记
  18. 解决AndroidStudio引入Jar出现Unable to resolve dependency for ':app@debug/compileClasspath
  19. 快速解决PHP调用Word组件DCOM权限的问题
  20. 3 python 基本数据类型

热门文章

  1. java中多态的实现机制
  2. 图-图的表示、搜索算法及其Java实现
  3. Keras学习笔记。
  4. Python中元组,列表,字典的区别
  5. 2013337朱荟潼 Linux&深入理解计算机系统第七章读书笔记——链接
  6. C++学习记录(留坑)
  7. [转帖]VMware Vsphere 6.0安装部署 (一) 总体部署架构
  8. 2013长春网赛1001 hdu 4759 Poker Shuffle
  9. ST算法详解
  10. 2017-12 CDQZ集训(已完结)