2010-01-08 59 views
0

是否有人知道在Web服务器上检查更新的一些好策略?通过网页检查更新有什么好策略?

我想了很久的Facebook首页和stackoverflow在这里查看问题的线。但是,我需要加载新的数据,而无需重新加载整个页面。

目前,我认为有一个JavaScript“计时器”工作的页面生存期,如果有任何新的数据已输入轮询web服务器。我们的目标范围是〜2000个浏览器同时进行此操作,所以我真的不希望对旧数据和新数据进行全面的平等检查。

我正在使用ASP.Net,所以我认为实现这一目标的一个好方法是在会话变量中存储“最后一个数据冲突时间”变量,然后更新该时间,如果新数据已输入客户应该收到。这听起来对你是否可行?

我不知道我自己的解释完全在这里,所以请询问您可能在评论任何问题,我会更新这个问题:)

在此先感谢

回答

2

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

我会创建一个Servlet作为REST资源的一个URL和一个lastModified方法,根据内容状态(和当前用户)来回答。客户端将使用HTTP HEAD轮询资源的当前状态。只有在上次请求后修改,客户端才会发送GET请求。如果服务器知道资源至少会保持未修改多久,他可以发送一个过期标题。然后客户将在到期时间后开始投票。

+0

这是一个非常整洁的想法。 “虐待”HTTP :)我会研究这个.. – cwap 2010-01-08 19:15:51

+0

很酷的想法我喜欢它 – RHicke 2010-01-08 19:24:45

1

你可以用”使用推送界面更新您的网页。所以你将不得不拉。只需用Ajax打开服务器并检查更新。


可以让你没有做你每次查找新的数据时,一个全尺寸的平等检查某处缓存此信息。您需要在服务器某处存储最后一次更新时间,如果这比客户端更新,您将知道有新数据要加载

1

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

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

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