你会看到使用单个websocket连接来处理网站上的所有请求有显著的加速吗?



假设我正在构建一个普通的旧网站。不是一个游戏,不是一个聊天程序,一个普通的网站。假设它是一个堆栈溢出克隆。

客户端将简单地对服务器端进行服务调用。服务器本质上是一个哑数据存储,从不发送HTML。客户端通过javascript处理所有的模板。

如果我建立一个单一的websocket连接,并通过它做所有的请求,我会看到一个显著的加速比做ajax请求?

使用单个连接的明显优点是它只需要建立一次。但这能节省多少时间呢?我知道建立一个TCP连接可能会很昂贵,但从长远来看,这有什么关系吗?

我不推荐websockets作为网页。HTTP 1.1可以为多个请求重用一个TCP连接,只有HTTP 1.0必须为每个请求使用一个新的TCP连接。

SPDY可能是一个您正在寻找的协议。参见SPDY:一个实验性的更快的网络协议,但它只支持Chrome。

如果你使用websockets,请求将不会被缓存

一个HTTP连接只能同时用于一个HTTP请求。假设一个页面请求了一个100Kb的文档,那么在100Kb的文档传输完成之前,客户端不会向服务器发送任何其他内容。这就是所谓的排队头阻塞。客户端可以与服务器建立额外的连接,但与同一服务器的并发连接数量也有限制。

开发SPDY和后来的HTTP/2的主要原因之一就是要解决这个问题。然而,对SPDY和HTTP/2的支持还没有像对WebSocket那样广泛。WebSocket可以让你更早到达那里,因为它支持全双工模式下的多个流。

一旦HTTP/2得到更好的支持,它将成为这个问题的首选解决方案,但WebSocket仍然会更好地用于实时web应用程序,其中服务器需要将数据推送到客户端。

看看N2O框架,它是为了解决我上面描述的问题而创建的。在N2O中,WebSocket用于发送与页面相关的所有资源。

使用WebSocket代替标准HTTP请求可以获得多少速度,这在很大程度上取决于你的具体网站:它从服务器请求数据的频率,典型响应的大小等。

相关内容

  • 没有找到相关文章