0

我有一个 flex 应用程序,它允许用户创建一些内容。然后,此内容将通过 xml 发送回服务器:

private function saveBackXMLToServer():void {
            var params:Object = {};
            params["xml_file"] = XML_content();
            http_Service.send(params);
        }

我的问题是,以这种方式传输数据非常慢... 10'000 行 XML 大约需要 20 秒... 怎样才能做得更好?

提前致谢!

马库斯

更新:嗨,谢谢您的所有评论。我正在尝试遵循您的所有提示,但它们似乎并不容易改变。我的代码以我无法访问每个对象的方式完成,并保存它。所以我要做的是用一个 xml 加载 swf 文件,并在运行后返回整个 xml。我的猜测是,时间并没有花在将这些行传输到 Web 服务器上(这个任务通常会很快完成),我认为 HTTPService 的发送函数上发生了一些事情,每个对象都必须在发送之前进行更改...

UPDATE2:我刚刚意识到这不是 flex 应用程序的问题,而是 rails 应用程序的问题。它接收一个 700 KB 的字符串。我想它不是为处理这样​​的对象而完成的。那怎么运输呢?我尝试处理文件上传,但无法完成...发生错误 2037!我会继续努力的。

4

5 回答 5

5

我强烈推荐使用 AMF 而不是 XML 我相信 20 秒可以缩短到几秒甚至更少。有适用于所有语言 PHP、Ruby、Java、Python 的 AMF 库。切换并不难,它会提高应用程序的性能

于 2010-04-06T18:33:33.720 回答
1

您可以将数据分解成更小的部分。这可以通过分解您已经发送的 xml 或使用 json(或某种压缩格式)来完成。

于 2010-04-06T13:55:33.040 回答
1

你想过使用blazeDS吗?我认为,如果您仍然可以对您的应用程序进行重大更改,那就去做吧!

使用 blazeDS,您与服务器的通信速度要快得多,几乎快 10 倍!

这里有一个有用的链接:adobe blazeDS 教程

如果您需要有关如何使用它的任何帮助,请写信给我。

于 2010-04-06T14:30:17.497 回答
1

也许对于这么大的数据,您可以将其打包并使用文件上传 (FileReference::upload) 来获得更好的吞吐量。

或者

查看一些用于 Actionscript 的 LZW 压缩库。我知道使用 WebService WSDL XML 数据,我能够将 500KB 的数据压缩到 40KB 左右。

于 2010-04-06T14:43:31.263 回答
0

我终于以或多或少的方式解决了这个问题。

问题是,rails 在处理带有小参数的请求时非常有效,但是如果将 xml 文件放入参数中,则速度非常慢......

由于无法将 xml 放入文件中发送,我们只是使用机架中间件将请求放入服务器上的文件中。

无论如何感谢您的回答!马库斯

于 2010-04-14T12:50:54.110 回答