Ajax请求有多少开销

时间:2019-03-17 19:41:27

标签: javascript ajax performance networking

我正在开发一个Web应用程序,该应用程序需要处理服务器中的大量数据。

数据可以“流式传输”并成块处理,因此为了使其更快,我将数据分解为数据包并使用ajax下载每个数据包。

我使用javascript承诺在前一个接收到它的数据时立即发送下一个ajax请求。

每个数据包约为300KB,通常总共有20个。

现在我的问题是,当我没有将数据包分解(即我下载一个6MB的文件)时,我的浏览器/网络需要大约4秒钟来完成它。

但是,当我将其分解为数据包时,即使文件大小最终相同,浏览器也会花大约8秒钟下载所有数据包。

我希望每个请求发送新的HTTP标头等都会有一些开销……但是要慢一倍,实在令人震惊。

我试图将ajax请求移至网络工作者上,以为主线程可能会延迟它们,但是还是发生了同样的事情。

总有没有要加快此过程的速度,或者是否有任何JavaScript协议可以保持连接打开。

我知道浏览器可以通过视频流执行此操作,但是我不知道如何在二进制数据包中使用该协议。

1 个答案:

答案 0 :(得分:1)

我相信默认情况下,浏览器中的TCP连接也受TCP拥塞控制的影响。

例如,“慢启动”可提高读取/发送数据的速率,以免使服务器不堪重负,并获得服务器可以处理的流量负载的基准。

如果您将6MB的请求分解为多个请求,则可能需要为每个请求支付“慢启动”罚款。

更多信息在这里: https://en.wikipedia.org/wiki/TCP_congestion_control

您可以尝试在服务器上打开keep-alive标头,看看这样做是否有所改善。