我想为我的应用程序中状态为待处理的项目实现一些视觉指示器,类似于 facebook/google 加上未读通知指示器......我已经编写了一个 API 来获取要显示的计数,但我是每次添加或删除项目时都坚持更新它,我可以想到两种我不满意的方法,
POST
orDELETE
操作时进行与计数相关的 API 调用我认为应该有更好的方法从服务器端执行此操作,有任何建议或任何宝石这样做吗?
我想为我的应用程序中状态为待处理的项目实现一些视觉指示器,类似于 facebook/google 加上未读通知指示器......我已经编写了一个 API 来获取要显示的计数,但我是每次添加或删除项目时都坚持更新它,我可以想到两种我不满意的方法,
POST
orDELETE
操作时进行与计数相关的 API 调用即使在 gmail 中,它也会根据客户请求进行刷新。服务器计算新项目的数量,客户端发起请求(可能使用 AJAX)。这需要几乎可以忽略不计的数据量和处理时间,因此您可能可以摆脱它。各种缓存 gem 甚至可以存储自上次请求以来没有数据更改的页面刷新部分,这甚至解决了仅在发生更改时才计算的问题。
更新:
您基本上可以通过两种方式解决该问题:服务器端推送和客户端查询。推送是有问题的,由于各种原因,很少在web环境中使用,至少据我所知。大多数页面(如果不是全部)使用定时查询来刷新此类信息。您可以使用正确的工具进行检查,例如 firebug for firefox。您可以看到向服务器发起的单个请求。
当您通过 AJAX 发出请求时,服务器会回复您。通常它会生成一个页面片段来用新的内容替换旧的内容,但是一些缓存机制可以干预,如果没有任何改变,你可能会得到之前存储的缓存片段。请参阅此处的一些教程,对于各种宝石,其中一种可能适合您的需求。
如果您更喜欢完整的解决方案,请查看 Faye(此处的教程)。我没用过,但可能值得一试,看起来很简单。