node.js socket.io 而不是 AJAX

node.js socket.io instead of AJAX

这个问题是关于提高速度和最小化空闲时间....

我的一个页面需要 2 次数据库调用。第一个数据库调用是关于快速操作的用户数据。第二个数据库调用是一个聚合管道调用,需要更多时间才能完成。

所以我只在第一个数据库调用完成后呈现页面。然后使用 AJAX 调用执行第二个数据库操作并将其显示在页面上。

问题 - 我知道 socket.io 的工作原理,但是否可以执行以下操作:

  1. 浏览器请求页面
  2. 服务器计算数据库调用 #1 并发送响应
  3. 服务器继续计算数据库调用#2 并等待浏览器通过 socket.io
  4. 连接
  5. 浏览器呈现步骤 #2 中的页面并使用 socket.io
  6. 连接到浏览器
  7. 服务器将数据库调用 #2 的结果发送到浏览器。

我实现的是 #3 在执行 #4 的同时执行,因此最大限度地减少了服务器空闲时间并优化了用户体验。

感谢任何意见。

可以使用 socket.io 执行您建议的操作,但我看不出您这样做的任何理由,因为 ajax 调用而不是 webSocket 可以提供相同的性能精简,但效率更高。它的工作原理如下:

  1. 浏览器请求页面
  2. 服务器计算数据库调用 #1 并发送响应
  3. 服务器继续计算数据库调用#2
  4. 当服务器完成 db 调用 #2 时,会为特定客户端临时缓存结果。
  5. 同时,浏览器获取第一页 HTML 并呈现
  6. 网页随后启动 Ajax 调用以请求调用 #2
  7. 的结果
  8. 服务器 returns 先前缓存的结果作为 Ajax 响应,然后清除缓存
  9. 客户端收到 Ajax 响应并处理它

因为不需要持续连接的客户端和服务器,而且因为简单的 Ajax request/response 比创建 webSocket 更有效,所以在我看来 Ajax调用比只为一条数据设置 webSocket 更有效。

但是,您概述的 webSocket 机制肯定可以工作(在支持 webSockets 的浏览器中)。