【问题标题】:What's the best way to auto update the contents of a page after a regular time interval?在固定时间间隔后自动更新页面内容的最佳方法是什么?
【发布时间】:2012-02-19 06:19:20
【问题描述】:

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

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

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

那么实现这一点的最佳方法是什么?我可以/应该为此使用 nodeJs 吗?

-谢谢

附:我只想要 facebook 之类的东西用来在页面中间更新它的新闻提要。

而且我没有使用 nodeJs 的经验,但老实说,我什至不知道 nodeJs 是否适用于此。

【问题讨论】:

  • 递归setTimeout()。或setInterval(),当不是当前选项卡/窗口时将被钳制,这在您的上下文中听起来很有用。

标签: jquery node.js comet


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    Node 对此肯定有用,但并不像 jfriend00 所说的那样有必要。查看socket.io 以获取从服务器“推送”通知到浏览器的示例。由于您对 node.js 没有任何经验,因此我是否会推荐它作为解决方案取决于应用程序。如果这只是一个出于教育目的的爱好项目,我会说继续,修补一下。如果这是用于生产系统并且您还没有在其他能力中使用 node.js,我说坚持使用简单的方法,例如您在问题中提到的 setInterval 方法。

    【讨论】:

      【解决方案3】:

      如果您要解决的问题是如何在不重复轮询后端服务器的情况下有效地更新浏览器显示,那么您可以使用“长轮询”,在该请求中发出具有较长超时的 Web 服务器请求,并且请求仅当实际上有一些新数据或最终超时时才返回。您可以通过在 Google 或 SO 中搜索“javascript long polling”来阅读更多内容。以下是其中的一些参考资料:

      How do I implement basic "Long Polling"?

      How to implement Server push / long polling / comet using PHP and Javascript

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

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

      无论哪种情况,您都需要一个能够同时处理大量但大部分是空闲连接的后端服务器。

      【讨论】:

      • 感谢您的回答,我会向您发送链接,但是您对在我的情况下使用 nodeJs 有什么看法?会有帮助吗?
      • @Peeyush - 我不知道 node.js。这当然没有必要。
      • 不要使用长轮询。使用 websocket。
      • @Raynos - 如果存在 Websockets 显然是受欢迎的,但它并没有在所有地方完全实现(例如 IE9 中不存在),因此在决定使用哪种技术之前必须测试存在哪些功能.有关一些信息,请参阅caniuse.com/websocketsGoogle search 提供了许多其他关于浏览器支持兼容性的参考资料。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 2021-06-30
      • 2011-06-04
      • 2011-06-19
      • 1970-01-01
      相关资源
      最近更新 更多