我有一个使用大量AJAX请求的网站,差不多每2-3秒一次。
我意识到的一件事是,如果我将页面放置超过20分钟,它就会开始通过机器上的RAM进行操作并将其拉起(服务器从不挣扎)。
//Get the recent activity for the account
function getRecentActivity() {
$.ajax({
url: baseAPIurl + APIversion + "user/activity/",
type: "GET",
data: {
user_id: ****
},
datatype: "json",
success: function (e) {
$("#recent_activity").empty();
if (e.status == "success" && e.results != null) {
$.each(e.results, function (e, t) {
if (t["campaign_type"] == "radio") {
$("#recent_activity").append('<li><a href="/***?id=' + t["campaign_id"] + '"><span class="label label-blue"></span>' + t["campaign_name"] + " - " + t["user_info"]["first_name"] + " " + t["action"] + '<br /><span class="pull-right text-muted small">' + t["timestamp"] + "</span></a></li>");
}
if (t["campaign_type"] == "online") {
$("#recent_activity").append('<li><a href="/***?id=' + t["campaign_id"] + '"><span class="label label-blue"></span>' + t["campaign_name"] + " - " + t["user_info"]["first_name"] + " " + t["action"] + '<br /><span class="pull-right text-muted small">' + t["timestamp"] + "</span></a></li>");
}
})
} else {
$("#recent_activity").append('<li><a href="#"><span class="label label-blue"></span>No Recent Activity<span class="pull-right text-muted small"> </span></a></li>');
}
}
})
}
有什么更好的方法来发出这么多请求,而不是使用1GB或更多的RAM?
答案 0 :(得分:1)
不是将html元素附加到DOM,而应该只是替换它们。这应该可以解决问题。
您的代码段中的示例:
$(“#recent_activity”)。html('
'+ t [“campaign_name”] +“ - ”+ t [“user_info”] [“first_name”] +“”+ t [“action”] +' ”);
'+ t [“timestamp”] +“
答案 1 :(得分:1)
根据OP的要求,我的意见是:
您可以尝试.empty()
或.append()
(这将更加香草化),而不是.html()
和.innerHTML
。
我怀疑每个.append()
调用jQuery内部缓存,但这可以通过使用例如Compuware AJAX Edition(检查内存本身)轻松证明。