在视频应用程序中实现like功能的有效方法

Efficient way to implement Likes features in a video application

本文关键字:功能 有效 方法 like 实现 视频 应用程序      更新时间:2023-09-26

我有一个基于视频的项目。在这个项目中,我想实现喜欢的功能。也就是说,有一个在每个视频与总喜欢计数的超链接,当用户点击该超链接之后,超链接是隐藏的,只显示喜欢的文本与该视频的总计数。

我写了这段代码在JavaScript与Ajax,但主要问题是,在一个会话中,如果一个用户喜欢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--';
       }
    }
}

如果你想让这个项目可伸缩,你需要一个更好的项目架构。
首先要做的是在服务器端代码上实现一个内存队列,并为此实现一个处理机制。每当用户点赞一个视频时,这个信息就会被添加到队列中,并且每隔2分钟对队列进行处理,并将其所有内容写入数据库。

通过这种方式,您可以控制访问DB的次数。
但是,如果将处理时间设置得太少,可能会给用户增加一些延迟。

希望这篇文章能帮到你,让你知道需要做什么。