垃圾收集如何在JavaScript中运行?它与.NET垃圾收集类似吗?是因为在VBScript中实现垃圾收集很糟糕,以至于人们避开垃圾收集并建立了对JavaScript作为标准客户端语言的偏好?
我有一个带有链式下拉菜单的页面.选择一个option从第一个select填充第二个,option从第二个中选择一个select返回一个匹配结果表,使用页面innerHtml上空的函数div.
问题是,一旦我做出选择并且大量数据被带到页面上,页面上的所有后续Javascript运行异常缓慢.好像我通过AJAX拉回来的所有数据div仍然占用了大量内存.我试着null在调用后设置包含AJAX结果的返回对象,innerHtml但没有运气.
当我使用Javascript将大量数据插入DOM时,Firefox,Safari,Chrome和Opera都没有显示性能下降,但在IE中它非常明显.为了测试它是一个Javascript/DOM问题而不是一个普通的旧IE问题,我创建了一个页面版本,它返回初始加载的所有结果,而不是通过AJAX/Javascript,并发现IE没有性能问题.
仅供参考,我正在使用jQuery的jQuery.get方法来执行AJAX调用.
编辑这是我正在做的事情:
<script type="text/javascript">
function onFinalSelection() {
var searchParameter = jQuery("#second-select").val();
jQuery.get("pageReturningAjax.php",
{SEARCH_PARAMETER: searchParameter},
function(data) {
jQuery("#result-div").get(0).innerHtml = data;
//jQuery("#result-div").html(data); //Tried this, same problem
data = null;
},
"html");
}
</script>
Run Code Online (Sandbox Code Playgroud)
我想要指出的是,当返回data非常大时,这只会成为一个问题.它与大小直接相关,因为我能够看到中等大小结果的适度减速,并且当返回几百条记录时只会出现大幅减速.