【发布时间】:2012-11-07 07:19:15
【问题描述】:
我需要在高度动态的 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。 非常感谢。
【问题讨论】:
-
你有解决这个问题的办法吗?它也发生在我身上......这里的问题是,我们正在将Phonegap用于移动应用程序,即使我更改页面也会出现问题......:-X
标签: jquery memory-leaks jsonp