最近有个项目需要在页面上实时显示数据库中的内容(客户要求刷新频率1秒),先用jaquery.ajax试了一下,内存会随着刷新将次数的增长而增长,网上查了一下,很多人说是循环中的jquery.ajax不断创建新的XMLHttpRequest对象所致,于是自己又写了一个自己创建XMLHttpRequest对象处理请求的页面,发现web浏览器的内存还是不断增长中(ie6和ie8及firefox3.6.12),还望各位给看一下问题到底是出在什么地方?
/////////////////////////jaquery.ajax测试///////////////////////////////////////////
- HTML code
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</title> <script type="text/javascript" src="jquery-1.6.2.js"></script> <script type='text/javascript'> var nCount = 1; function chlink() { var strUrl = "GetStatus.ashx?Count="+nCount++; $.ajax({ url: strUrl, type: "get", dataType: 'text', cache: false, success: function (data) { if( "Error"==data ) { $("#date").html("Server status is error" ); } else { $("#date").html("Serever status is normal" ); } data = null; } }); strUrl = null; setTimeout('chlink()',100); } $(document).ready(function() { chlink(); }); </script> </head> <body> <div id="date"></div> </body> </html>
////////////////////////XMLHttpRequest的测试//////////////////////////////////
- HTML code
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</title> <script type="text/javascript" src="jquery-1.6.2.js"></script> <script type='text/javascript'> var nCount = 1; var req=null; var READY_STATE_UNINITIALIZED=0; var READY_STATE_LOADING=1; var READY_STATE_LOADED=2; var READY_STATE_INTERACTIVE=3; var READY_STATE_COMPLETE=4; function loadXMLDoc(url) { if( !req ) { alert(url); if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } if (req) { req.onreadystatechange = processReqChange; } } // if (req) { //alert(url); req.open("GET", url, true); req.send(null); } } function processReqChange() { var ready=req.readyState; var data=null; if (ready==READY_STATE_COMPLETE) { data = req.responseText; //alert(data); if( "Error"==data ) { $("#ComputerDevice1").html("Server status is error" ); } else { $("#ComputerDevice1").html("Serever status is normal" ); } data = null; //req = null; setTimeout('GetContent()',1); } else { $("#date").html("NO"+nCount+" loading...["+ready+"]" ); } } function GetContent() { loadXMLDoc("GetStatus.ashx?Count="+(nCount++)); } $(document).ready(function() { GetContent(); }); </script> </head> <body> <div id="ComputerDevice1" class="DeviceNormal"><!-- onclick="changecss()">--> </div> <div id="date"></div> </body> </html>