我有一个基于视频的项目。在这个项目中,我想实现Likes功能。也就是说,每个视频上都有一个超链接,其总数与计数一样,当用户点击该超链接后,隐藏超链接并仅显示带有该视频总数的喜欢文本。
我已经用Ajax在JavaScript中编写了这段代码,但主要的问题是,如果用户喜欢5个视频,那么在一个会话中,将会遇到5次db。有没有有效的方法来实现它?
<div id="status${video.id}"><a href="javascript:callLike('${video.id}');"> Like- </a> </div><a id="like1${video.id}" style="color:#ffffff;">${video.likesCount}</a>
function callLike(id)
{
document.getElementById("like"+id).innerHTML='300';
var postData = '?Id='+id;
var url =protocol+'//'+host+'/xxx/getLike'+postData;
// alert("url:"+url);
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.onreadystatechange = likesres;
req.open("POST", url, true);
req.send(null);
}
function likesres()
{
if (req.readyState == 4) {
if (req.status == 200) {
response = req.responseText;
document.getElementById("like1"+id).innerHTML=response;
document.getElementById("status"+id).innerHTML='Liked--';
}
}
}
答案 0 :(得分:0)
如果要使此项目可扩展,则需要更好的项目体系结构。
您应该做的第一步是在服务器端代码上实现一个内存中的队列及其处理机制。每当用户喜欢视频时,此信息就会添加到队列中,每隔2分钟就会对队列进行处理,并将其所有内容写入数据库。
这样,您可以控制数据库被命中的次数。
但是,如果您不经常设置处理时间,可能会给用户增加一些延迟。
希望这会有所帮助,并让您知道需要做什么。