HTTP1.0、HTTP1.1有什么区别呢?
1.长连接:HTTP1.0需要采用keep-alive参数来告知server建立一个长连接,而HTTP1.1默认是长连接。HTTP是基于TCP的应用连接,如果每次通讯都需要连接的话,那性能消耗太大了,因此最好建立一个长连接。
2.节约带宽:HTTP1.1支持只发送header信息(不需要带任何请求体),如果server认为client可以请求数据,则返回100,否则返回401。客户端如果收到100才把请求体发送给server。这样当服务器返回401时,client就可以不用发送请求体了,节约了带宽。另外,HTTP还支持传送内容的一部分。这样当client已经有了一部分的资源后,只需要跟server请求剩余的资源了。这是断点续传的基础。
3.host域:HTTP1.1的场景下,web server如tomcat是支持多个虚拟站点可以共享同一个ip和端口的。
HTTP1.1和HTTP2.0有什么区别呢
1.多路复用:即一个连接处理并发请求多次,以前是1个请求1个线程阻塞的,多路复用会用select阻塞多个线程,然后轮询这些线程IO,如果数据一旦准备好后,线程就会真正的IO操作(此时数据已经在内核了,用户线程直接拷贝就可以)。期间如果数据没有准备好,用户线程可以干其他事情。当然HTTP1.1也可以多建立几个TCP连接,但是多个连接还是得消耗一定的资源。而且建立TCP后会有个慢启动的过程。
2.数据压缩:HTTP1.1不支持header数据区域的压缩,2.0使用HPACK算法进行压缩,传输速度更快
3.服务器推送:意思是说客户端请求server后,server会把一些相关的客户需要的数据也一并传输过去,免得客户端再次建立连接请求server。比如一些静态文件,这种方式就非常适合。