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
   271   272   273   274   275   276   277   278   279   280   281