2010-04-06 48 views
0

我有一个允许用户创建一些内容的Flex应用程序。此内容将被通过XML发送回服务器:HTTPService发送10'000行XML到服务器非常缓慢

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

我的问题是,这种方式是非常缓慢的数据传输......大约需要20秒,10000行的XML ...这如何做得更好?

在此先感谢!

Markus

更新:你好人的感谢您的所有意见。我试图按照你所有的提示,但他们似乎并不容易改变。我的代码是以无法访问每个对象的方式完成的,并保存它。所以我所做的就是用一个xml加载swf文件,并在运行它之后返回整个xml。我的猜测是,没有花费时间将这些行传送到Web服务器(这项任务通常很快完成),我发现HTTPService的send函数发生了一些事情,每个对象都必须在发送之前发送...

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

+0

什么数据速率是连接? XML的大小是多少?传输时可以使用压缩吗? – Oded 2010-04-06 13:53:35

+1

A)我第二次Oded的评论。 B)使用允许使用AMF的东西。 – 2010-04-06 16:00:20

+0

你认为GZip? – 2010-04-06 23:03:49

回答

0

我终于用一种或多或少的好方式解决了这个问题。

的问题是,导轨与小参数航凌要求非常有效的,但如果你把一个XML文件中的参数是非常缓慢...

至于有没有办法把XML在发送它的文件中,我们只是使用机架中间件将请求放入服务器上的文件中。

无论如何感谢您的答案! Markus

1

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

1

您是否认为使用blazeDS? 我认为,如果你仍然可以对你的应用程序做出重大改变,那就做吧!

with blazeDS你可以更快地与服务器进行通讯,速度快x10!

这里有用的链接:adobe blazeDS tutorial

,如果你需要的是如何使用它任何帮助,只是给我写。

+0

它接缝变得太大,但感谢您的提示 – Markus 2010-04-07 10:24:47

1

也许你可以将数据包打包并使用文件上传(FileReference :: upload)来获得更好的吞吐量。

看看Actionscript的一些LZW压缩库。我知道WebService WSDL XML数据,我能够将500KB的数据压缩到40KB之类的数据。

+0

您好taudep,我试图使用FileReference,但我怎么能让我的字符串到文件? – Markus 2010-04-07 09:19:57

+0

我想这不起作用。它接缝,只有本地存储的文件可以像这样上传... – Markus 2010-04-07 10:24:05

5

我强烈建议使用AMF而不是XML我相信20秒钟可以缩短到几秒甚至更短。有用于所有语言的AMF库PHP,Ruby,Java,Python ..切换并不难,它会改善你的应用程序的性能