【问题标题】:Do you have any idea how Google Docs Javascript do the interval data autorefresh?您知道 Google Docs Javascript 如何自动刷新间隔数据吗?
【发布时间】:2012-06-08 11:36:53
【问题描述】:

好的,那就这样吧:

我目前正在实施一个软件,该软件使用 AJAX 自动刷新/自动拉动/自动重新加载数据以保持屏幕实时。

这确实有效,但我知道我使用了最简单的方法:

  1. SetInterval (javascript)
  2. 每隔 n 秒反复调用 Refresh 方法。
  3. 读取 Json 数据,重建 HTML 并更新它。

这也可以通过调用 SetTimeOut (javascript) 并结束 AJAX 请求来完成。

在刷新方法中,我在内部检查它是否被同时调用,等等。

但是...这是最简单的方法,它可以工作,但是在慢速计算机、firefox 和 ie 中,我可以看到这个活动有时会冻结浏览器,我知道这可能不是必需的,因为 AJAX调用,但总体而言,javascript 操作有多“密集”……但是,在运行分析器之后,总体 javascript(顺便使用 jquery)似乎还不错。此外,如果我禁用自动刷新,浏览器不会在慢速计算机中冻结几秒钟。

我决定研究几个主要的 AJAX 应用程序是如何工作的。

例如 Facebook.. 他们一个请求,每 N 秒,解释 JSON 并更新屏幕,但是,谷歌文档......我似乎可以找到任何请求。 . 这可能是因为:他们只是告诉 javascript 调试器引擎他们不希望记录他们的请求?或者,他们是否使用另一种方法来解决刷新困境?

我在 stackoverflow 的另一个答案中读到,Google Docs 保持开放连接..

这就是答案吗? http://ajaxpatterns.org/HTTP_Streaming

你们对此了解多少?

顺便说一句,我正在开发的应用程序旨在同时被成千上万的用户访问,我知道 JavaScript 刷新例程只讲述了一小部分历史,但服务器端应用程序和根据我使用数千个虚拟化站点所做的压力测试,该数据库目前支持这样的负载。我只是想知道您对 client 浏览器问题的具体看法。

问候和 如果你还在读这篇.. 感谢您的宝贵时间。

【问题讨论】:

  • 你不能告诉调试器不要记录任何东西......
  • 但是如果调试器不记录任何东西怎么办? (对不起,糟糕的玩笑)

标签: javascript jquery ajax design-patterns


【解决方案1】:

我怀疑他们使用的是WebSockets。浏览器支持不稳定,因此您的里程可能会因这种方法而异。

您可能还想查看APE(ajax 推送引擎),它是使用客户端/服务器架构的长轮询的体面实现。

【讨论】:

    【解决方案2】:

    您可以阅读Long Polling。但是你必须处理掉线等问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 2023-03-10
      • 2010-12-25
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多