对于一个不断向服务器请求数据的网页,我应该使用什么技术


What technology shall I use for a webpage that constantly requests data from server

我们需要创建一个基于web的前端来显示一些数据。问题是数据大约需要每秒更新一次。对于作为一名web开发人员的我来说,显而易见的解决方案是AJAX。不幸的是,这种网络前端的目的之一是显示在嵌入式浏览器窗口内,该窗口预计将持续运行数月甚至数年。就是这样,几个月的工作没有重新启动/刷新。在测试过程中,我们在Safari中运行了一个概念验证接口(每1.5秒请求一组简单的数据(一个多月。在这段时间里,Safari的内存使用量从大约30 MB提高到超过100MB。因此,我们担心这样一个解决方案的稳定性。

我想知道你是否可以为我们推荐任何其他技术来完成这项任务,可能会减少开销(当请求简单的数据集时——就像我们的情况一样——恐怕HTTP标头是数据的重要组成部分(

我建议研究node.js和now.js插件,它允许通过websocket进行实时更新。它甚至支持旧的浏览器,所以如果浏览器不支持websocket,它将转而使用comet服务器实现、AJAX或iframe。

在linux环境中进行设置非常容易,而且有足够的文档可以帮助您入门。

它与javascript一起工作,并在Google V8 javascript引擎上运行,所以如果你曾经使用过OOP javascript,你应该能够相对容易地学会它。

链接:
http://nodejs.org/
http://nowjs.com/

Adobe AIR作为前端怎么样?你可以在里面使用Flash/FLEX,它有不错的垃圾收集器,所以长时间运行应该不会有问题。AIR还允许使用XHTML和JavaScript编写,因此如果您只熟悉这些技术,它可能是一个不错的选择

PHP对于这类请求不是一个好的选择。Comet似乎是从服务器接收数据的好方法。例如,您可以使用优秀的Tornado(Python(作为后端。

ActionScript允许使用TCP套接字,因此您可以编写自己的协议以获得更好的性能,并使用BOOST Asio(C++(或Netty(Java(作为可扩展的后端

也许是websocket?服务器不是每X秒发出一个AJAX请求,而是在新数据到来时推送它们。

我个人最喜欢的是php4+、mysql、apache或lightpd-webserver。

我也建议使用Python。

我专门研究你提到的内容,话虽如此,你真的会看着屏幕吗?如果没有,您应该使用http套接字或通过linux盒子上的wget-cronjob请求页面。

是的,http头非常重要,如果你试图去掉它们,Web服务器将发出"服务器错误请求"错误。

让我知道你的决定,我有很多要分享的:(

我怀疑问题不在于AJAX本身,而在于使用浏览器:我不认为任何地方都是考虑到持续运行的,我假设所有(重新(加载过程最终都会变成某种形式的额外内存。

我认为你最好通过自己设计的简单的东西来消耗你的数据。很明显,你可以在同一个地方生产它(服务器,可通过HTTP或任何你最喜欢的方式请求(,但如果你的目标是首先"正常运行几年",你就不需要一个完整的网络浏览器。