我正在通过jquery调用ajax调用,而在服务器端我正在使用PHP。目的是从服务器端带来一个大的JSON数据。由于JSON大小很大,这就是我在发送数据时使用gzip压缩的原因。
在服务器端;
ob_start('ob_gzhandler');
header('Content-Encoding: gzip');
现在我看到正在传输的数据量大幅减少。但是我看到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阶段,我没有得到这种行为的原因。
那种帮助会非常有帮助。如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
对我来说,这种行为似乎与gzip压缩的工作方式有关。
您所看到的时间不能像没有gzip压缩一样解释,因为您发生了更多事情:
您可能需要在网络监控选项卡中启用“使用大型请求行”以查看更详细的时序。也许这也会有所帮助。
答案 1 :(得分:2)
答案 2 :(得分:1)
我们无法告诉您服务器内部或您与服务器之间网络上发生的情况。我们无法对您的代码中的特定问题发表评论,因为您尚未向我们展示任何问题。然而...
您是否测量过服务器本身的响应配置文件?
禁用压缩?
压缩和PHP的输出缓冲是否已禁用?
为什么要在php中压缩而不是在Web服务器上压缩?或者在SSL层?
您是否已检测过代码以确定执行进度?
你有没有想过你的代码?
您的代码是否显式执行ob_end_flush()后紧跟一个退出(在已注册的关闭函数中处理任何清理)?