我需要在高度动态的 Web 应用程序中执行 jsonp 长轮询,但是我遇到了大量的内存泄漏。最初,我使用了 Socket.IO 和 jsonp 传输,结果相同,然后设置了一个 JQuery 测试页面,以查看问题是否仅在 socket.io 库中本地化。我惊讶地发现,从 JQuery 进行 jsonp 轮询也会导致相同的结果:在 IE9 中,内存增长非常快(不到 10 分钟),从大约 80-90 MB 增加到超过 1.8 GB :(。
他是客户端的测试代码:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
<script type="text/javascript">
$(document).ready( function() {
var doPoll = function() {
$.ajax({
type: 'GET',
url: "http://<server-url>/jquery-jsonp/server.php",
cache: false,
async: true,
crossDomain: true,
dataType: "jsonp",
success: function (data, status) {
console.log("Received response"+data);
doPoll();
},
error: function (xhr, textStatus, errorThrown) {
// access denied
}
});
}
doPoll();
});
</script>
</head>
这是虚拟服务器响应:
<?php echo $_GET['callback']."(".json_encode(array("status"=>"success")).")";
如您所见,这里没有什么特别之处。关于导致此问题的原因和可能的解决方法有什么想法吗?
请求需要跨域执行,我们必须支持 IE8/9。非常感谢。