通过网页检查更新的一些好策略是什么?

时间:2010-01-08 19:04:17

标签: asp.net ajax

您是否了解检查网络服务器更新的一些好策略?

我正在思考facebook startpage和stackoverflow questionviewing的行。但是,我需要加载新数据而不重新加载整个页面。

目前,我想有一个javascript“计时器”在页面生命周期内工作,如果输入了任何新数据,则轮询网络服务器。我们的目标范围是〜2000个浏览器同时执行此操作,因此我真的不希望对旧数据与新数据进行全面的等式检查。

我正在使用ASP.Net,所以我认为实现这一目标的一个好方法是在会话变量中存储“last datapolling time”变量,然后在输入新数据时更新该客户端应该收到。这听起来对你有用吗?

我不确定我是否完全在这里解释过,所以请在评论中提出任何问题,我会更新这个问题:)

提前致谢

3 个答案:

答案 0 :(得分:2)

我不熟悉.Net,但我可以告诉你如何用Java Servlets解决它。 .Net中的解决方案应该类似。

我会创建一个Servlet作为REST资源,其中包含某个URL和一个lastModified方法,该方法根据内容状态(和当前用户)进行解答。客户端将使用HTTP HEAD轮询资源的当前状态。只有在自上次请求后对其进行了修改时,客户端才会发送GET请求。如果服务器知道资源至少保持未修改的时间,他可以发送一个到期头。然后,客户端将在到期时间后开始轮询。

答案 1 :(得分:1)

您无法使用推送界面更新网页。所以你将不得不拉。只需使用Ajax命中服务器并检查更新。


您可以在某处缓存此信息,以便每次查找新数据时都不会进行完全等级检查。您需要在服务器上的某个位置存储上次更新时间,如果这比客户端时间更新,您将知道有新数据需要加载

答案 2 :(得分:1)

轮询服务器并使用AJAX更新某些内容可能是最常见的解决方案,但您实际上可以使用推送来更新您的网页。它当然更具异国情调,但您可以使用Silverlight的双工通信将内容推送到页面。

Tomasz Janczuk开发了一个stand-alone javascript library来处理Silverlight功能的客户端。

他甚至有一篇文章讨论了网络农场的横向扩展影响 - http:// tomasz.janczuk.org/2009/09/scale-out-of-silverlight-http-polling.html(删除空间 - 我的新手状态阻止我在答案中不止一次链接)。他做了一些很棒的工作,可以帮助你为你的内容设置一个很好的推送模型。