node.js socket.io 而不是 AJAX
node.js socket.io instead of AJAX
这个问题是关于提高速度和最小化空闲时间....
我的一个页面需要 2 次数据库调用。第一个数据库调用是关于快速操作的用户数据。第二个数据库调用是一个聚合管道调用,需要更多时间才能完成。
所以我只在第一个数据库调用完成后呈现页面。然后使用 AJAX 调用执行第二个数据库操作并将其显示在页面上。
问题 - 我知道 socket.io 的工作原理,但是否可以执行以下操作:
- 浏览器请求页面
- 服务器计算数据库调用 #1 并发送响应
- 服务器继续计算数据库调用#2 并等待浏览器通过 socket.io
连接
- 浏览器呈现步骤 #2 中的页面并使用 socket.io
连接到浏览器
- 服务器将数据库调用 #2 的结果发送到浏览器。
我实现的是 #3 在执行 #4 的同时执行,因此最大限度地减少了服务器空闲时间并优化了用户体验。
感谢任何意见。
可以使用 socket.io 执行您建议的操作,但我看不出您这样做的任何理由,因为 ajax 调用而不是 webSocket 可以提供相同的性能精简,但效率更高。它的工作原理如下:
- 浏览器请求页面
- 服务器计算数据库调用 #1 并发送响应
- 服务器继续计算数据库调用#2
- 当服务器完成 db 调用 #2 时,会为特定客户端临时缓存结果。
- 同时,浏览器获取第一页 HTML 并呈现
- 网页随后启动 Ajax 调用以请求调用 #2
的结果
- 服务器 returns 先前缓存的结果作为 Ajax 响应,然后清除缓存
- 客户端收到 Ajax 响应并处理它
因为不需要持续连接的客户端和服务器,而且因为简单的 Ajax request/response 比创建 webSocket 更有效,所以在我看来 Ajax调用比只为一条数据设置 webSocket 更有效。
但是,您概述的 webSocket 机制肯定可以工作(在支持 webSockets 的浏览器中)。
这个问题是关于提高速度和最小化空闲时间....
我的一个页面需要 2 次数据库调用。第一个数据库调用是关于快速操作的用户数据。第二个数据库调用是一个聚合管道调用,需要更多时间才能完成。
所以我只在第一个数据库调用完成后呈现页面。然后使用 AJAX 调用执行第二个数据库操作并将其显示在页面上。
问题 - 我知道 socket.io 的工作原理,但是否可以执行以下操作:
- 浏览器请求页面
- 服务器计算数据库调用 #1 并发送响应
- 服务器继续计算数据库调用#2 并等待浏览器通过 socket.io 连接
- 浏览器呈现步骤 #2 中的页面并使用 socket.io 连接到浏览器
- 服务器将数据库调用 #2 的结果发送到浏览器。
我实现的是 #3 在执行 #4 的同时执行,因此最大限度地减少了服务器空闲时间并优化了用户体验。
感谢任何意见。
可以使用 socket.io 执行您建议的操作,但我看不出您这样做的任何理由,因为 ajax 调用而不是 webSocket 可以提供相同的性能精简,但效率更高。它的工作原理如下:
- 浏览器请求页面
- 服务器计算数据库调用 #1 并发送响应
- 服务器继续计算数据库调用#2
- 当服务器完成 db 调用 #2 时,会为特定客户端临时缓存结果。
- 同时,浏览器获取第一页 HTML 并呈现
- 网页随后启动 Ajax 调用以请求调用 #2 的结果
- 服务器 returns 先前缓存的结果作为 Ajax 响应,然后清除缓存
- 客户端收到 Ajax 响应并处理它
因为不需要持续连接的客户端和服务器,而且因为简单的 Ajax request/response 比创建 webSocket 更有效,所以在我看来 Ajax调用比只为一条数据设置 webSocket 更有效。
但是,您概述的 webSocket 机制肯定可以工作(在支持 webSockets 的浏览器中)。