2

我想知道如何更新网站上的快速数字。

我有一台产生大量输出的机器,我需要在线展示它。但是我的问题是更新频率很高,因此我不确定如何处理它。

最好显示最后 N 个数字,比如 10。数字以 30Hz 更新。这对人眼来说可能太多了,但人眼在这里只是为了控制。

我想知道如何做到这一点。页面重新加载将使浏览器不断加载页面,对于网页来说,需要显示的不仅仅是这些数字。

我可能会生成一个原始 Web 引擎,通过特定的 IP 地址和端口号将数字写入页面,但即便如此,我想知道这个页面重新加载是否会太慢,给用户带来奇怪的体验。

我应该如何处理网站上如此极端的数据更新率?通常网站不是这样的。

在这个问题的标签中,我命名了我理解的语言。最后我可能会用 C# 编写。

4

3 回答 3

2

a) WebSockets 与 ajax 一起仅更新站点的一部分会起作用,缺点:客户端基础设施(代理)必须支持这些(目前 99% 的时间都不是这种情况)。

b) 对于现有的基础设施,方法是长轮询。您使用 javascript 创建一个 XmlHttpRequest。如果没有数据存在,请求会在服务器端被阻塞 5 到 10 秒。如果数据可用,您会立即回答请求。然后客户端立即发送一个新请求。我设法使用通过代理、http 连接到网络服务器的 java 客户端每秒获得 >500 次更新(显示实时股票数据)。您需要为每个请求捆绑多个更新以获得足够的吞吐量。

于 2012-12-18T18:19:19.677 回答
1

您不必使用页面重新加载。您可以使用 WebSockets 在浏览器(通过 JavaScript)和服务器之间建立开放的双向通信。

Python Tornado支持这个内置的。此外,还有一些其他 Python 服务器支持它。Socket.IO是一个很棒的 JavaScript 库,带有后备功能,以方便客户端。

于 2012-12-18T18:09:08.990 回答
0

在后端,您可以使用 Redis 或像 VoltDB 这样的 NewSQL 数据库来快速更新内存数据库。缓存对高延迟组件有很大帮助(尤其是在写入繁重的应用程序中)。

在前端,您可以查看 websockets 和 Comet Web 应用程序模型http://en.wikipedia.org/wiki/Comet_%28programming%29

许多游戏公司必须处理快速的计数器更新和显示——这可能值得研究。Zynga 使用协议调用 AMF http://highscalability.com/blog/2010/3/10/how-farmville-scales-the-follow-up.html

于 2012-12-18T18:28:50.790 回答