1

我有一个每 5 秒执行一次备份的功能。有时无法访问备份的目标服务器,请求会停止,直到达到超时。由于这会影响用户界面,我将这个“备份功能”作为异步 ajax 请求执行。

setInterval("doSync()", 5000 );

function doSync() {    
     $.ajax({
         url: "backup.php",
         async : true
     });
 };

这在后台运行得很好。但是一旦执行页面的重新加载,已经等待的备份函数调用将完成。所以在最坏的情况下,如果我有一个 30 秒超时的备份,用户必须等待这 30 秒才能加载新页面。这是用户不能接受的。

我可以实施哪种策略来避免这种情况?可以终止备份请求...

4

2 回答 2

0

我认为这个问题是特定于浏览器的。事实上,它们中的大多数都限制了对同一主机的并行请求数量,这就是它在重新加载页面之前“等待”的原因。

如果您通过 AJAX 请求调用与您尝试重新加载的 URL 完全相同的 URL,Firefox 将不会同时运行多个请求。一个简单的解决方法是将随机查询字符串附加到 URL。

另一种选择是使用 javascript beforeunload 事件来取消您的 AJAX 请求:Abort Ajax requests using jQuery

于 2013-04-28T21:54:14.313 回答
0

我可能会考虑在您的情况下设置超时。我还发现类似的问题已经解决: 点击

于 2013-04-28T21:59:52.327 回答