Rails:定期使用HEAD检查页面更改

时间:2010-04-14 10:11:40

标签: ruby-on-rails ruby polling http-head

我有一个实现游戏的Rails应用程序,因此预计玩家将在游戏页面上打开浏览器。当玩家Alan自己采取行动时,我使用AJAX请求更新Alan正在查看的游戏页面以反映新状态。但是,当另一个玩家(Bob)采取行动时,我没有(或想要)一种机制将改变推向Alan的视野。

我希望Alan的页面定期轮询Rails服务器以查找自上次重新加载以来是否有任何更改,并重新加载页面(通过整页GET或AJAX调用),如果没有。为了很好地使用缓存和代理,我想通过发出一个定期的HTTP HEAD请求来做到这一点,让Rails计算出最后一次更改的时间戳(通常可以从我的数据库中获得)并在Last中做出响应 - 修改标题;然后在该时间戳上进行客户端操作。

我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

你想要的很多内容都是内置于Rails。

在Rails缓存指南中查看Conditional GETS

如果你设置正确,那么只需在浏览器和服务器之间进行。

如果您非常热衷,可以在Rails堆栈前放置一个反向代理,并拥有一整层额外的缓存。

答案 1 :(得分:0)

  

我没有(或想要)机制将更改推送到Alan的视野。

为什么不希望realtime updates与其他玩家观看?

您可以使用long polling ajaxmessaging之类的Juggernaut AJAX请求来做到这一点(确实如此?)或者如果Flash是您的首选武器,那么nginx_http_push_module可能是一个选项。 WebSockets看起来也很有希望。公平地说,整个交易有点乱,所以我们希望能够快速转移到HTML5及其{{3}}。