【问题标题】:Is there a way to speed up sending data from Node.js to the client for large amounts of data?有没有办法加快从 Node.js 向客户端发送大量数据的数据?
【发布时间】:2016-10-25 23:50:13
【问题描述】:

我目前正在创建一个将 Node.js/Socket.io 与 mysql 数据库结合使用的程序(这是我的第一个节点项目)。我使用 Node.js 有两种方式:

  • 在客户端上对数据所做的任何更改都会发送到 Node.js 以发送到其他客户端并进行处理。这很好用。
  • 连接后,所有与程序相关的数据都会发送到客户端。

在我对大量数据进行测试之前,一切都按照我想要的方式进行。

我相信我在这里错过了这条船。我想知道是否将所有数据发送给客户端是愚蠢的,我是否应该简单地通过 PHP 而不是 Node.js 来完成,或者我是否应该只处理程序中的非快速性并根据需要加载数据而不是一次全部加载.我这样做的原因是因为我希望程序非常快并且很少需要重新加载,但现在我正在查看 1 分钟的初始加载时间以及大量数据 - 并且一次连接多个客户端,它使加载时间增加一倍、三倍等...

如果它不是愚蠢的并且是可能的,那么执行此操作的最佳方法是什么,以便客户端不会影响彼此的加载时间,从而提高加载速度?


作为旁注,它实际上看起来很奇怪,因为当我加载页面并查看控制台时,迄今为止最大的对象似乎要在客户端中完全加载,而我的 Node.js 命令提示符仍在吐出同样的信息会发疯。

【问题讨论】:

  • “大量数据”是多少?
  • 一个由 2475 个对象组成的数组,每个对象大约有 12 个键值对。
  • 这是多少字节?
  • 将此脚本添加到我的代码中:russwurm.com/uncategorized/…,结果为 848558 字节。
  • 这在任何情况下都不是可以忽略的数据量。我认为如果可能的话,考虑增量加载可能是值得的。

标签: mysql node.js socket.io


【解决方案1】:

您必须查看缓慢的来源。它不太可能是语言(但可能是)。是吗

  • 从数据库中检索? (考虑某种缓存,如 memcache)
  • 在服务器中处理? (缓存处理后的结果,使用更快的服务器或更快的语言)
  • 通过网络传输? (减少发送的数据,提高压缩率)
  • 其他地方?

【讨论】:

  • 感谢您的回复。这很可能是传输。请记住,目前这一切都是本地的(服务器和客户端使用同一台机器)。我说传输的原因是因为如果我注释掉发出语句(并且仍然执行数据库查找、javascript 循环等),则完全没有延迟到达终点。
  • 简单来说……应该是慢吗? 2475 个对象的数组,大约需要 20-30 秒(通常)才能到达客户端。
  • @jdgower -- 那么你就在正确的轨道上。尝试使用curl 或类似(快速)客户端通过本地网络访问它,看看需要多长时间。
猜你喜欢
  • 2013-02-01
  • 2017-05-07
  • 2018-05-13
  • 2011-09-12
  • 2015-04-05
  • 2012-10-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多