Page 276 - Web性能权威指南
P. 276
XHRკ
HTTPၹᅱ EventSourceၹᅱ WebSocketၹᅱ
图 17-2:XHR、SSE 和 WebSocket 的通信流比较
传播与排队延迟
把传输机制从 XHR 切换为 SSE 或 WebSocket 并不会减少客户端与服务器间的往
返次数!不管什么传输机制,数据包的传播延迟都一样。不过,除了传播延迟,
还有一个排队延迟——消息在被发送给另一端之前必须在客户端或服务器上等待
的时间。
对 XHR 轮询而言,排队延迟就是客户端轮询间隔:服务器上的消息可用之后,必
须等到下一次客户端 XHR 请求才能发送(参见 15.7.1 节的“XHR 轮询的性能建
模”)。相对来说,SSE 和 WebSocket 使用持久连接,这样服务器(和客户端——
如果是 WebSocket)就可以在消息可用时立即发送它。
综上所述,SSE 和 WebSocket 的“低延迟交付”专指消除了消息的排队延迟。我
们还没发现怎么让 WebSocket 数据包跑得比光还快!
17.3.2 消息开销
建立了 WebSocket 连接后,客户端和服务器通过 WebSocket 协议交换数据:应用消
息会被拆分为一或多个帧,每个帧会添加 2~14 字节的开销。而且,由于分帧是按
照自定义的二进制格式完成的,UTF-8 和二进制应用数据可以有效地通过相同的机
制编码。这一点与 XHR 和 SSE 比如何呢?
WebSocket | 265