发送大型数据集。最佳方法

时间:2016-10-20 07:00:24

标签: javascript mysql socket.io hapijs

我使用Hapi / React / Sequelize / MySQL堆栈 我有一个客户。根据请求,服务器可能会发送1或最多500k的结果。这些结果是一个包含对象的数组(每个对象可能有15个属性)。发送大型列表不是一种选择,因为内存需要很长时间。我还需要对结果集进行一些计算。 所以我想以块的形式发送数据,可能每个10k(3秒)。 我可以想到两种方法。

方法一(长轮询):

  1. 我在服务器上发出初始请求,服务器只返回产品的ID。
  2. 例如,我得到100k ID。客户端以10k块的形式发送AJAX请求。一旦达到100k,它就会向客户显示结果。
  3. 方法二(套接字):

    1. 客户提出请求。插座已打开。
    2. 服务器通过套接字发送10k的块。 套接字可以处理那么多流量吗? 10k大小约为300kb。
    3. 还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

我会建议每10k或更低块的并行请求,然后在计算后显示它的结果,而其余的仍然加载,因为它附加主显示等等:)

EDIT: pseudocode
listOfProductsIDArray = get id of products;
itemsPerLoad = 10;
mainDisplay = array;
for loop (index = listOfProductsIDArray/itemsPerLoad ){

send AJAX request with index;
if(AJAXrequest is success)
       procees results
       mainDisplay appends results from mysql
}

mysql side::
select * from products limit AJAXindex,itemsPerload
return results