我正在使用Ajax轮询来轮询服务器以获取进度百分比。如果您想知道,我不使用setInterval,因为那样可能会导致多个请求彼此挨饿。我在jQuery.ajax()的“完成”回调中使用setTimeout,并为下一个请求设置了5000毫秒的超时时间。
因此,ajax调用大约每隔5-7秒进行一次(具体取决于上一个ajax调用响应的时间,并且它会缓慢地从0%变为100%。
问题是,尽管所有进行的ajax调用似乎都可以正常工作并且几乎是按时进行的,但是只有最后一个ajax调用才会延迟。并且不会延迟从服务器获得响应。最后一个ajax调用本身是在经过大约2分钟的长时间延迟后进行的。
我已经搜索并阅读了关于SO的所有类似问题/答案,而我的情况似乎很独特,因为只有上次检查状态请求才被延迟,而其他所有请求都可以正常工作。
此ajax调用的服务器日志在几乎所有测试中都给出了以下模式(这是一个示例):
如果需要,我的代码如下:
'c-lb-text-zone'
我花了几天的时间来寻找为什么最后一个ajax调用只是被延迟的原因,甚至不是服务器,而是客户端本身。