我们需要创建一个基于Web的前端来显示一些数据。问题是数据需要每秒更新一次。 对于我作为网络开发人员来说,显而易见的解决方案是AJAX。 不幸的是,这个Web前端的目的之一是显示在嵌入式浏览器窗口内部,预计它将持续运行数月甚至数年。就是这样,几个月的工作没有重启/刷新。 在测试过程中,我们在Safari中运行了一个概念验证界面(每个1,5s请求一组简单的数据)一个多月。在这段时间内,Safari的内存使用量从大约30 MB增加到超过100 MB。 因此,我们害怕这种解决方案的稳定性。
我想知道你是否可以推荐我们任何其他技术来完成这项任务,可能会减少开销(当请求简单的数据集时 - 就像我们的情况一样 - 我担心HTTP标头是数据中非常重要的一部分)
答案 0 :(得分:1)
Adobe AIR作为前端怎么样?你可以使用Flash / FLEX里面有很好的垃圾收集器,所以长时间运行不是问题。 AIR还允许使用XHTML和JavaScript编写,因此如果您只熟悉这些技术,它可能是一个不错的选择
对于这种请求,PHP不是一个好的选择。 Comet似乎是从服务器接收数据的好方法。您可以使用例如优秀的Tornado(Python)作为后端。
ActionScript允许使用TCP套接字,因此您可以编写自己的协议以获得更好的性能,并使用BOOST Asio(C ++)或Netty(Java)作为可扩展的后端
答案 1 :(得分:1)
我建议查看node.js和now.js插件,它允许通过websockets进行实时更新。它甚至支持旧版浏览器,因此如果浏览器不支持websockets,它将覆盖彗星服务器实现,AJAX或iframe。
在Linux环境中进行设置非常简单,并且有足够的文档可以帮助您入门。
它适用于javascript并在Google V8 javascript引擎上运行,所以如果你曾经使用过OOP Javascript,你应该可以相对容易地选择它。
答案 2 :(得分:0)
也许websocket?服务器不是每X秒发出一次AJAX请求,而是在新数据到来时推送它。
答案 3 :(得分:0)
我个人的faverite是php4 +,mysql,apache或lightpd webserver。
我还建议使用Python。
我专注于你提到的内容,据说,你真的会看到屏幕吗?如果不是,您应该使用http套接字或通过Linux机箱上的wget cronjob请求页面。
是的http标头非常重要,如果你试图将它们剥离出去,网络服务器就会发出“服务器 - 错误请求”错误。
让我知道你的决定,我有很多东西可以分享:)
答案 4 :(得分:0)
我怀疑问题不是AJAX本身,而是使用浏览器sich:我不认为任何在不断运行的地方,并且我假设所有(重新)加载过程将变成一些最终形式的额外记忆。
我认为你最好通过自己设计的简单方式来消费你的数据。显然,您可以在同一地点(服务器,通过HTTP或您最喜欢的任何地方请求)生成它,但如果您的目标是“几年正常运行时间”,则不需要完整的Web浏览器。