【发布时间】:2012-06-23 16:16:03
【问题描述】:
我有一个 Web 应用程序,我试图通过减少它运行的数据库查询的数量来提高效率。我倾向于实现某种 Comet 风格的解决方案,但我在该部门缺乏经验,这让我怀疑是否存在更简单的解决方案。
为简洁起见,假设我有一个数据库,其中包含网络上的系统列表及其当前状态(无论它们是启动还是关闭)。用户可以登录 Web 应用程序并选择她有兴趣监控的系统。之后,她可以访问显示当前关闭的系统数量的监控页面。
到目前为止,计数是使用 Ajax 刷新的……客户端每分钟向服务器发送一个请求,服务器依次对数据库运行查询以获取当前计数并将结果返回给客户端。我知道这效率低下;对于每个登录的客户端,每分钟都会对数据库运行另一个查询。 O(n) = 不好!
我知道我可以使用某种类型的缓存,例如 memcached,但这仍然意味着每个用户每分钟都有一个请求。更好,但我仍然觉得这不是最好的解决方案。
我设想的更像是这样的:
- 服务器每分钟运行一次查询,以获取当前关闭的所有系统的计数。
- 然后服务器将此数据推送给感兴趣的客户端。
这样,无论有多少用户登录并观看监控页面,服务器每分钟只运行一次查询。 O(1) = 好!问题是,即使在我完成了所有研究之后,我也无法完全弄清楚如何实现这一点。老实说,我并不完全理解我在寻找什么,因此很难研究解决方案。所以我希望更多开明的开发者能带领我走向正确的方向。
【问题讨论】:
标签: javascript ajax performance optimization comet