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