我们正在创建一个动态 Web 应用程序,其中只有网页的某些部分会通过 JQuery AJAX 加载/卸载/重新加载。
但是我们担心如果用户长时间(几个小时)运行我们的应用程序而没有完全刷新网页会发生什么。
例如,我们有一个带有 map 、商店、战斗模块的游戏。该页面还有一些在开始时加载的模块(例如带有统计信息和聊天的标题)。但所有导航和更改大部分都使用 AJAX 在中心进行。假设用户执行以下操作:
前往 map 前往商店 去战斗 前往商店 前往 map ...
由于 map 、商店、战斗都有自己单独的 Javascript 文件,这些文件会在每个请求上加载(我猜,主要来自浏览器缓存),内存使用情况会发生什么情况?当用户“离开”Map 时,我们是否需要清理 Map 变量和事件处理程序?用户第二次导航到 map 时,是否会与旧 map 脚本发生冲突?如果我们不在卸载时进行一些清理,浏览器是否会开始使用越来越多的 RAM,最终用户将被迫重新加载页面?
有没有可靠的技术来处理这种情况?
最佳答案
如果将所有函数绑定(bind)到某个对象,您可以随时释放该对象以及所有函数。例如:
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;
关于javascript - 动态加载/卸载 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693395/