我们正在创建一个动态Web应用程序,其中只有网页的某些部分将通过JQuery AJAX加载/卸载/重新加载。
但是我们担心如果用户长时间(几个小时)运行我们的应用程序而没有完全刷新网页会发生什么。
例如,我们有一个游戏,包含模块Map,Shop,Fight。该页面还有一些在开头加载的模块(如带有统计信息和聊天的标题)。但是所有的导航和更改大多发生在使用AJAX的中心。假设用户执行以下操作:
转到地图 去商店 去战斗 去商店 去Map ...
作为Map,Shop,Fight有自己独立的Javascript文件,每个请求都会加载(我猜,主要来自浏览器缓存),内存使用情况会怎样?当用户从Map“导航”时,我们是否需要清理Map变量和事件处理程序?当用户第二次导航到Map时,是否会与旧的Map脚本发生冲突?如果我们在卸载时不进行一些清理,浏览器是否会开始使用越来越多的RAM,那么最终用户将被迫重新加载页面?
有没有可靠的技术来处理这种情况?
答案 0 :(得分:3)
如果将所有函数绑定到某个对象,则可以随时使用所有函数释放该对象。例如:
function badFunction(a,b,c) {
alert("Bad example of function. Can't cleanup this.";
}
var gameObject = new Object();
gameObject.goodFunction = function (a,b,c) {
alert("Good example of a function");
}
//Here the whole gameObject 'module' will be allowed to be garbage collected (hopefully).
gameObject = null;