自定义时间间隔后自动更新页面内容的最佳方法是什么?

我正在使用Web应用程序,其中有一个DIV,其中显示来自其他某个网站的最新主题更新。 所以我想要的是在数据真正更新后端数据库时更新DIV。

在后端我使用cron来获取和存储数据库中的数据。

这样做的一个简单的方法是使用setInterval()函数并持续以特定的时间间隔获取数据,但我认为这只会导致服务器上不必要的负载,并浪费CPU周期。

那么实现这个的最好方法是什么? 可以/我应该使用nodeJs吗?

-谢谢

PS我只是想像Facebook使用更新它的新闻饲料在页面中间。

而且我还没有使用nodeJs的经验,所以我真的不知道nodeJs是否适合这个。

如果您要解决的问题是如何高效地更新浏览器显示而不重复轮询后端服务器,那么您可以使用“长轮询”,在其中发出长时间超时的Web服务器请求,并且请求仅在实际上有一些新的数据或最终超时。 您可以通过search谷歌或SO阅读更多的“JavaScript长轮询”。 以下是一些参考文献:

我如何实现基本的“长轮询”?

如何使用PHP和Javascript实现服务器推/长轮询/彗星

http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

在现代浏览器中,也可以使用Web套接字,客户端直接向服务器打开一个套接字,服务器只在有新数据时向您发送新数据。

在任何一种情况下,您都需要一台可同时处理大量空闲连接的后端服务器。

节点肯定可以用于这个,但是没有必要像jfriend00说的那样。 看看socket.io中的“推送”通知从你的服务器到浏览器的例子。 既然你没有任何关于node.js的经验,它将取决于应用程序,我是否会推荐它作为解决scheme。 如果这只是一个用于教育目的的爱好项目,我会说去吧,修补一下。 如果这是一个生产系统,并且您还没有使用其他function的node.js,那么我坚持一些简单的事情,比如您在问题中提到的setInterval方法。

尝试谷歌searchsocket.io / now.js ,它将通过推送到客户端使用websockets轻松解决您的问题,并优雅地回now.js闪存套接字。 您不必将所有代码移植到node.js,而是将其与原始代码一起使用。 另外请注意,如果间隔最初是5分钟,那么使用setInterval ajax会更好。 Websockets最适合于(近)实时通信(几秒钟内有一个小的延迟,如聊天)。