以gzip格式发送数据导致ajax进度停止了一段时间

KOU*_*DAL 7 javascript php ajax jquery gzip

我通过jquery maj ajax调用,在服务器端我使用PHP.目的是从服务器端带来一个大的JSON数据.由于JSON大小很大,这就是我在发送数据时使用gzip压缩的原因.

在服务器端;

ob_start('ob_gzhandler');
header('Content-Encoding: gzip');
Run Code Online (Sandbox Code Playgroud)

现在我看到正在传输的数据量大幅减少.但是我看到ajax调用进度停留了一段时间(我通过chrome网络监控区域检查).

观察结果如下;

1.呼叫状态显示待处理约23秒(这是完美的,因为它与生成JSON完全相同)

2.数据传输从第24秒开始,并在接下来的5到6秒内继续传输94.4 kB数据

3.之后它几乎停滞了20秒,当时间没有增加时,我的意思是它显示同样的时间停留在第2点.

4.然后它突然显示ajax调用完成,我得到完整的数据和时间显示直接到56秒左右.数据大小保持不变,即94.4 kb,这意味着在第3阶段和第4阶段没有传输额外数据

所以,请你解释我的第3阶段和第4阶段,我没有得到这种行为的原因.

而那种帮助将非常有帮助.如果您需要更多信息,请告诉我.

Ili*_*dia 2

对我来说,这种行为似乎与 gzip 压缩的工作原理有关。

您看到的时间不能以与不使用 gzip 压缩相同的方式解释,因为您会发生更多事情:

  • 在服务器端缓冲数据以进行压缩
  • 缓冲完成后进行实际压缩
  • 将更小的压缩数据发送给客户端
  • 客户端现在正在缓冲压缩数据,需要等到获取全部数据后才能解压缩
  • 最后,客户端可以解压缩数据,这比压缩时间快得多

您可能需要在“网络监控”选项卡中启用“使用大型请求行”才能查看更详细的计时。也许这也会有所帮助。

在此输入图像描述

(图片来源)