我有一个每5秒执行一次备份的功能。有时,无法访问备份的目标服务器,并且请求将停止,直到达到超时。 由于这会影响用户界面,因此我将此“备份函数”作为异步ajax请求执行。
setInterval("doSync()", 5000 );
function doSync() {
$.ajax({
url: "backup.php",
async : true
});
};
这在后台非常好。 但是只要重新加载页面,就会完成已经等待的备份函数调用。因此,在最坏的情况下,如果我有30秒超时的备份,则用户必须在加载新页面之前等待30秒。 这对用户来说是不可接受的。
我可以采用哪种策略来避免这种情况? 可以终止备份请求......
答案 0 :(得分:0)
我认为这个问题对浏览器来说非常具体。 实际上,它们中的大多数都限制了对同一主机的并行请求数,这就是它在重新加载页面之前“等待”的原因。
如果您通过AJAX请求调用与您尝试重新加载的URL完全相同的URL,Firefox将不会同时运行多个请求。一个简单的解决方法是将随机查询字符串附加到URL。
另一种选择是使用javascript beforeunload事件取消您的AJAX请求:Abort Ajax requests using jQuery
答案 1 :(得分:0)
我可能会考虑在你的情况下设置超时。 我也发现类似的问题已经解决了:click