HTTP——新增协议

2019-06-25  本文已影响0人  章鱼要回家

HTTP建立之初,只是用于传输HTML文档,所以功能非常简单。但如今的Web应用的用途越来越多样,需求也不断变化,HTTP已无法满足。在不抛弃HTTP的基础上,新建立了一些协议用以满足新需求。

HTTP的性能瓶颈

用户庞大的社交网站在短时间内就会有大量用户发布内容,Web页面则要在短时间内就对大量内容进行更新。这需要做到服务器的数据一有更新,就需要将内容反馈到客户端的界面上。

根据HTTP协议标准,其很难满足这种短间隔内更新大量数据的需求:

解决一:Ajax

Ajax是一种可以达到局部加载更新Web页面的异步通信手段。和原始的同步通信相比,它只更新一部分页面,响应中传输的数据量会因此而减少,优势明显。
Ajax的核心技术是名为XHR的API,通过JS语言的调用就能和服务器进行HTTP通信。借用这种手段,就能从已加载完毕的Web页面上发起请求,只更新局部页面。

缺点:利用Ajax实时从服务器获取内容,可能会导致大量请求产生。另外,Ajax仍未解决HTTP协议本身存在的问题,即首部冗余和非强制压缩等。

解决二:Comet

为了解决Ajax大量请求的问题,Comet通过延迟应答,模拟实现服务器向客户端推送的功能。
通常服务器在接收到请求后会立即响应,但Comet会先将响应挂起,当服务器内有内容更新时,再返回该响应。因此,服务器一旦有更新,就可以立即返回给客户端。

缺点:为了保留相应,一次连接的时间也变长了。为了维持连接也会消耗更多的资源。并且,首部冗余和非强制压缩等HTTP本身的问题也没有解决。

解决三:SPDY

Google于2010年发布了SPDY,目的在于解决HTTP的性能瓶颈,缩短Web页面的加载时间(50%)。
对HTTP本身的小修小改都无法突破HTTP本身的限制,所以需要协议层的改动。SPDY协议就是为了消除HTTP的瓶颈。
SPDY是在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。SPDY以会话层的形式加入,控制对数据的流动。但还是采用HTTP建立通信连接。
使用SPDY后,HTTP获得额外功能:

缺点:该技术在实际应用中效果不佳, 因为SPDY基本上只是将单个域名(IP地址)的通信多路复用,所以当一个Web网站上使用多个域名下的资源,改善效果就会受到限制。

使用浏览器进行全双工通信的WebSocket

利用Ajax和Comet技术进行通信可以提升Web的浏览速度。但若使用HTTP协议,就无法彻底解决瓶颈问题,WebSocket真是为解决这些问题而实现的一套新协议及API。
WebSocket曾计划将其作为HTML5标准的一部分,而它逐渐变成了独立的协议标准。在2011年被正式定为标准。

一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,不论哪方都可以直接向对方发送报文。
WebSocket功能:

为建立WebSocke通信,需要完成一次“握手”的步骤,这次“握手”是通过HTTP实现的,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变。对于该请求,服务器返回状态码101 Switching Protocols。成功握手建立WebSocket连接。

上一篇下一篇

猜你喜欢

热点阅读