0

我想让网站上的一个用户可以在我的 Django 网站上聊天请求另一个用户。我希望被请求者得到一个实时框,上面写着:“你想聊天吗?”

以下客户端轮询方法听起来如何:

user1 点击users2 的昵称,对一些/message/requests 产生一个POST 请求,在数据库中创建一个CHAT_REQUEST 类型的Message。同时,user2 的浏览器上的一个 Javascript 片段反复向服务器查询消息更新。当它接收到 CHAT_REQUEST 类型的消息时,它会打开一个弹出窗口...

这种方法的问题似乎是数据库访问。

如果客户端每 10 秒轮询一次,并且有 100 个用户打开浏览器窗口,则每秒有 10 个数据库请求。

将这些消息不存储在数据库中,而是存储在 Django RAM 或会话信息中会更好吗?或者这个数据库表会用 PostgreSQL 缓存在 RAM 中,并且检索速度很快?

4

2 回答 2

2

正如您所说,为此的数据库表会给您的服务器带来负载,但如果您出于任何原因想要记录这些请求,可能会很有用。

使用 memcached 或 AMQP 服务器之类的东西可能会给您带来更好的性能。如果您愿意,您甚至可以使用性能更高的键值存储,例如 Tokyo Cabinet / Tokyo Tyrant。

于 2010-02-24T21:30:44.503 回答
1

如果您担心服务器性能和带宽使用情况,我建议您寻找“类似 COMET”的通信而不是“类似 AJAX”的通信。

顺便说一句,REDIS看起来非常适合处理这种内存数据结构。

于 2011-08-08T18:01:46.587 回答