0

ユーザーがコンテンツを作成できるフレックスアプリがあります。このコンテンツは、xml 経由でサーバーに送信されます。

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

私の問題は、この方法でのデータの転送が非常に遅いことです.10,000 行の XML に約 20 秒かかります.これを改善するにはどうすればよいでしょうか?

前もって感謝します!

マーカス

更新: こんにちは、コメントありがとうございます。私はあなたのすべてのヒントに従おうとしていますが、変更するのは簡単ではないようです. 私のコードは、すべてのオブジェクトにアクセスして保存することができない方法で行われています。そのため、swf ファイルに 1 つの xml をロードし、実行後に xml 全体を返します。私の推測では、これらの行を Web サーバーに転送するのに時間が費やされていないため (このタスクは通常は迅速に行われます)、送信前にすべてのオブジェクトを変更する必要がある HTTPService の send 関数で何かが発生していると思います。 ...

UPDATE2: flex アプリの問題ではなく、Rails アプリの問題であることに気付きました。700 KB の文字列を受け取ります。そのようなオブジェクトを処理するために行われていないと思います。じゃあどうやって運ぶの?ファイルのアップロードを試みましたが、完了できませんでした... エラー 2037 が発生していました。がんばります。

4

5 に答える 5

5

XML の代わりに AMF を使用することを強くお勧めします。20 秒を数秒以下に短縮できると思います。PHP、Ruby、Java、Python のすべての言語用の AMF ライブラリがあります。切り替えはそれほど難しくなく、アプリのパフォーマンスが向上します。

于 2010-04-06T18:33:33.720 に答える
1

データをより小さな断片に分割できます。これは、既に送信している xml を分解するか、代わりに json (または圧縮形式) を使用することで実行できます。

于 2010-04-06T13:55:33.040 に答える
1

おそらく、データが大きい場合は、それをパッケージ化し、ファイル アップロード (FileReference::upload) を使用してスループットを向上させることができます。

また

Actionscript 用の LZW 圧縮ライブラリのいくつかを見てください。WebService WSDL XML データを使用すると、500 KB のデータを 40 KB 程度に圧縮できたことがわかります。

于 2010-04-06T14:43:31.263 に答える
1

blazeDS を使用することを考えましたか? アプリに大きな変更を加えることができる場合は、それを実行してください!

blazeDS を使用すると、サーバーとの通信がはるかに高速になり、ほぼ 10 倍高速になります!

ここに便利なリンクがあります: adobe blazeDS チュートリアル

使い方の助けが必要な場合は、私に書いてください。

于 2010-04-06T14:30:17.497 に答える
0

私は最終的に多かれ少なかれ良い方法で問題を解決しました。

問題は、Rails は小さなパラメーターでリクエストをハングリングするのに非常に効率的ですが、xml ファイルをパラメーターに入れると非常に遅くなることです...

xml をファイルに入れて送信する方法がないため、ラック ミドルウェアを使用してサーバー上のファイルにリクエストを入れました。

とにかく答えてくれてありがとう!マーカス

于 2010-04-14T12:50:54.110 に答える