我会建议保持简单...
创建一个数据库表来存储您的活动,插入到该表在适当的时候,那么就实现一个简单的Ajax轮询技术打服务器的每X秒在客户端。
我有使用推送通知的方式或使用NoSQL数据存储库考虑其他解决方案的关注。与使用内置于Django框架的工具的传统pull-notification系统相比,它要复杂得多,除了非常罕见的例外情况外,这些工具都是过分的。除非您特别需要严格的实时解决方案,否则请保持简单并使用框架中已有的工具,对于基于数据库或网络性能的异议人士,我只能说,过早优化是所有的邪恶。
构建一个模型,其中包含特定于您的应用程序的最新活动数据,然后,只要您的应用程序执行了某些应该记录新活动的内容,您可以将其插入此表中。
您的看法与其他任何视图一样,从此RecentActivity
表格(可选地基于查询参数以及其他)中拔出顶部的x行。
然后,在客户端,您只需要一个简单的ajax轮询器,每x秒就会触发您的视图。没有复杂的插件和技术,你可以使用的不足,但是,自己写也没那么复杂或者:
function simplePoll() {
$.get("your-url", {query-parameters}, function(data){
//do stuff with the data, replacing a div or updating json or whatever
setTimeout(simplePoll, delay);
});
}
我的观点是性能问题不是真正的问题,直到您的网站是成功足以让他们成为一个问题。一个传统的关系数据库可以很好地扩大规模,直到你开始达到像Twitter,Google等成功的水平。我们大多数人都不在这个水平:)
这通常是很好的建议,但问题确实说明了“在Django(使用AJAX long-polling)”。 – dkamins