如何使用Javascript在网站上更新项目列表


How to keep a list of items updated on a website using Javascript?

来自Python/Java/PHP,我现在正在建立一个网站。在它上,我想要一个项目列表在近实时更新:如果项目(服务器端)从列表中添加或删除,这应该在网页上更新。我做了一个简单的API调用,现在我每秒钟轮询一次,使用jQuery更新列表。因为我需要更多的列表在同一页面上保持更新,我担心这将变成每一个打开的浏览器每秒超过10个服务器调用,即使没有更新。

这似乎不是合乎逻辑的方法,但我真的不知道还能怎么做。我看了看Meteor,但由于我正在构建的网页是一个更大系统的一部分,所以我在技术选择上受到了相当大的限制(基本的LAMP设置)。

有谁能从实时网站的世界中给我一些关于如何有效地保持列表更新的提示吗?

可以使用WebSocket(https://code.google.com/p/phpwebsocket/)技术

但是PHP不是实现它的最佳语言

一种工作方法是为您想要更新(或不更新)的不同类型的数据使用状态变量。

为了避免重新查询完整的表,即使其中的数据集与特定客户端在任何给定时间显示的内容没有变化,您可以在服务器上(例如在专用的小表中)和客户端上的javascript变量中维护数据类型的状态计数器变量。

无论何时对服务器上的数据表进行更新,都要更新那里的状态计数器。

您的AJAX轮询调用将查询此状态计数器,将其与相应的javascript变量进行比较,并且只有在它发生变化时才执行数据更新调用,将本地javascript变量更新为服务器所拥有的。

为了避免必须分别轮询每种数据类型,您可能希望为每种数据类型使用带有成员的JS对象。

注意:是的,这些都是理论性的,但是,嘿,问题也是理论性的;)