跳出固定思维-网络请求顺序

常见请求模型

如果我们请求三个数据A,B,C, 处理B的数据依赖A, 处理C的数据依赖B. 那么我们请求的时候, 是先请求A, 返回之后处理A, 之后请求B, 返回之后处理B, 最后再是请求C, 处理C.

问题

整个请求模型是串行, 非常耗时。如果我们使用类似于angular的双向绑定模式, 我们会发现整个页面会慢慢渲染完成.

websocket 解决同步问题

发送同步

websocket走的是长连接, 而且是一个长连接, 那就意味着, 先发出去的东西, 服务端一定会先接收到. 这点不同于http请求, 多个请求到达的时间点顺序是无法保证的.

服务端同步处理

服务端使用同步的方式处理数据, 那么就可以保证先到达的请求, 一定会被先处理, 处理完成之后, 会被先发送. 如果说我们用的是异步处理, 那么也是没法保证处理的时序问题的.

并行请求方案

一旦解决顺序问题, 那么我们可以并行发起多个请求, 只要发送的时序顺序的, 那么肯定可以保证接收的时序.

总结

使用并行的方案, 能够极大的解决网络延迟问题, 页面的几乎没有延迟. 当然这种是建立在使用websocket的基础之上的. 如果我们有更好的解决方案, 那就是合并请求了, 将ABC合并成一个请求, 将所有的数据一次推下来, 不管是http还是websocket, 这种方式都是最优先的.

发表评论

电子邮件地址不会被公开。 必填项已用*标注