HTTP瓶颈以及解决方法之websocket
HTTP的瓶颈就是:HTTP协议的性能受到限制,web页面加载时间过长,实时更新大量的数据无法妥善处理,但由于全球已经有很多的浏
览器都是基于HTTP协议,所以无法完全抛弃HTTP,因此产生了很多基于HTTP的协议的新协议,添加了新功能。
瓶颈详细化描述有如下几点:
1.一条连接上只可发送一个请求。
2.请求只能从客户端开始。客户端不可以接受除响应以外的指令。
3.请求/响应首部未经压缩就发送。首部信息越多延迟越大。
4.发送冗长的首部,每次互相发送相同的首部造成的浪费较多。
5.可任意选择数据压缩格式。非强制压缩发送。
解决方法之一:ajax
ajax是一种有效利用JavaScript和DOM的操作,以达到局部web页面替换加载的异步通信手段,响应中传输数据减少但是它可能会导致大量
请求产生,而且它并未解决HTTP协议本身存在的问题。
解决方法之二:Comet
comet是一种一旦服务器有了更新就不会让请求等待,直接给客户端返回响应,这是一种通过延迟应答,模拟实现服务器端向客户端推送的
功能。但是为了保留响应,一次连接的持续时间变长,为了维持连接会消耗更多资源,而且它并未解决HTTP协议本身存在的问题。
解决方法之三:SPDY
SPDY是一种在TCP/IP的应用层与传输层之间通过新加会话层的形式运作,通信中使用ssl解决安全问题,它提高了TCP的处理效率,解决了
因宽带低而导致的响应变慢的问题,使通信中产生的数据包数量和发送的字节数变少了,支持服务器主动向客户端推送数据,资源在以缓存
等情况下可以避免发送不必要的请求但是使用SPDY时,SPDY是将单个域名的通信多路复用,改善效果受到限制。
解决方法之四:WebSocket
WebSocket是web服务器与web浏览器之间的全双工通信标准。任在开发的WebSocket是为了解决ajax和Comet里XMLHttpRequest附带
的缺陷所引起的问题。WebSocket是基于HTTP上的协议,一旦建立WebSocket连接,无论客户端还是服务器端,任意一方都可直接向对方
发送报文。它具有推送功能,减少了通信量,当HTTP建立之后,需要完成一次握手的的步骤。JavaScript可调用“the WebSocket API”
内提供的WebSocket程序接口,以实现WebSocket下的全双工通信。