Alrighty!我正在为我的网站开发小聊天插件,当用户登录时他们会看到聊天记录,我正在使用Javascript对象将所有消息存储在我的NodeJS服务器中,现在我想要它因此,只要对象中有超过50个条目,它就会添加最新消息并删除最旧的消息,我希望每次用户登录时都限制我的服务器处理大量消息。我怎么会这样做?
以下是我存储邮件的方式,
var messages = {
"session":[
]
};
messages.session.push(
{
"name":user.name,
"message":safe_tags_replace(m.msg),
"image":user.avatar,
"user":user.steamid,
"rank":user.rank,
}
);
我还可以在JSON对象中加载最后50条消息但是每当我运行我的服务器很长一段时间而不重新启动它时,这个对象将变得非常大,这会是一个问题吗?
答案 0 :(得分:0)
由于您将元素推送到数组的末尾,因此您可以使用数组shift()来删除数组的第一个元素(如果需要)。 e.g。
x++
回答问题的第二部分:
您拥有的数据越多,您在客户端计算机上消耗的物理内存就越多。哪个可能 - 本身 - 是一个问题,特别是对于移动设备和旧硬件。也;拥有庞大的数组会影响查找,迭代,一些插入操作和排序的性能。
答案 1 :(得分:0)
在服务器中存储包含聊天记录的JSON对象不是一个好主意。对于一个你正在占用的记忆将被无限期地搁置。如果您有多个客户端相互接管,这些对象将继续增长,最终会影响性能。其次,一旦服务器重新启动,或者在清理完这些对象后,聊天记录就会丢失。 理想的解决方案是将消息存储在数据库中;一个简单的解决方案是mongoDB。每当用户登录应用程序时。查询数据库以查找该用户的聊天记录(此处您可以定义要返回的距离),并向他们发送包含此数据的初始响应。然后,无论何时发送消息,都将该消息插入表/集合中以供将来参考。这样,服务器仅负责在初始登录期间发送聊天记录。之后,客户端负责维护任何添加的新消息。