每秒查询表以获取通知。这是一个好习惯吗?

Posted

技术标签:

【中文标题】每秒查询表以获取通知。这是一个好习惯吗?【英文标题】:query table every second for notification. Is it a good practice? 【发布时间】:2014-03-10 23:26:01 【问题描述】:

我有一个具有通知功能的项目,我想出了一个关于如何实时获取通知的想法。我的想法是每秒查询一次表。我有一个通知表,所以每当客户端添加一些内容时,它都会插入通知表,然后另一个客户端通过查询它来获取通知。我使用 ajax 来做到这一点。

每秒查询表好还是不好的编程习惯?我只在 localhost 中使用它,这很好。这种想法会对网站上线产生负面影响吗?

提前感谢您的回答。

【问题讨论】:

100 个客户端用户每秒查询站点/数据库是服务器上相当明显的性能开销 【参考方案1】:

每秒 ping 数据库不是理想的方法;您可以实现 DB 触发器和 html5 websockets/推送通知的组合: http://html5hacks.com/blog/2013/04/21/push-notifications-to-the-browser-with-server-sent-events/

http://www.abrandao.com/2013/06/25/websockets-using-modern-html5-technology-for-true-server-push/

http://pusher.com/tutorials/html5_realtime_push_notifications

【讨论】:

当然,WebSockets 依赖于 HTML5 支持。 Comet 之类的技术将保持对推送通知的长期 AJAX 请求开放,而无需 HTML5。 而且,正如@eggyal 暗示的那样,“HTML5 支持”目前还不是一个明确的笼统概念:html5test.com/results/desktop.html【参考方案2】:
    这将仅由极少数客户使用吗?或者这将是一个公共网站,将有数十个客户查询数据库?如果它不仅仅是少数人,你不想这样做。相反,请考虑静态保存 DB 结果(例如,本地保存的 JSON 文件)并让客户端访问它。 考虑增加超时。您确定 1 秒真的比 10 秒更有优势吗? 如果您预计会有很多人,您会希望查看将数据推送给您的客户的另一种架构。我认为Meteor 很棒,但这里有多种选择。

【讨论】:

以上是关于每秒查询表以获取通知。这是一个好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的应用程序中添加两个数据库?这是一个好习惯吗?

jQuery 插件 - 这是一个好习惯吗?

这是问答的好习惯吗?

无限for循环内的goroutine。这是一个好习惯吗?

在控制器中进行 linq 查询是一种好习惯吗?

Mongoose - 更新模型的实例方法,这是一种好习惯吗?