HTTPService работает очень медленно, посылая на сервер 10 000 строк XML - PullRequest
0 голосов
/ 06 апреля 2010

У меня есть гибкое приложение, которое позволяет пользователю создавать контент. затем этот контент будет отправлен через xml обратно на сервер:

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

Моя проблема в том, что передача данных этим способом очень медленная ... На 10 000 строк XML требуется около 20 секунд ... Как это можно сделать лучше?

Заранее спасибо!

Markus

ОБНОВЛЕНИЕ: Привет, парень, спасибо за все ваши комментарии. Я пытаюсь следовать всем вашим намекам, но изменить их, похоже, не так просто. Мой код сделан таким образом, что я не могу получить доступ к каждому объекту и сохранить его. Поэтому я загружаю SWF-файл одним XML-файлом и возвращаю весь XML-файл после его запуска. Я полагаю, что на передачу этих строк на веб-сервер не тратится время (эта задача обычно выполняется быстро), я думаю, что в функции отправки HTTPService происходит что-то, что каждый объект должен быть изменен перед отправкой ...

ОБНОВЛЕНИЕ2: Я только что понял, что дело не в гибком приложении, а в приложении rails. Он получает строку 700 КБ. Я думаю, что это не сделано для обработки такого объекта. Как транспортировать его тогда? Я пытался работать с загрузкой файла, но не смог сделать это ... Произошла ошибка 2037! Я буду пытаться.

Ответы [ 5 ]

5 голосов
/ 06 апреля 2010

Я настоятельно рекомендую использовать AMF вместо XML. Я считаю, что 20 секунд можно сократить до нескольких секунд или даже меньше. Существуют библиотеки AMF для всех языков PHP, Ruby, Java, Python. Переключение не так сложно, и это повысит производительность вашего приложения

1 голос
/ 06 апреля 2010

вы думали использовать BlazeDS?Я думаю, что если вы все еще можете вносить большие изменения в свое приложение, просто сделайте это!

с blazeDS, вы получите намного более быструю связь с сервером, почти в 10 раз быстрее!1005 * учебник Adobe BlazeDS

, если вам нужна помощь, как его использовать, просто напишите мне.

1 голос
/ 06 апреля 2010

Может быть, для таких больших данных вы можете упаковать их и использовать File upload (FileReference :: upload) для повышения пропускной способности.

ИЛИ

Посмотрите на некоторые библиотеки сжатия LZW для ActionScript.Я знаю, что с XML-данными WebService WSDL я смог сжать 500 КБ данных до 40 КБ.

1 голос
/ 06 апреля 2010

Вы можете разбить данные на более мелкие части. Это можно сделать, разбив XML-файл, который вы уже отправляете, или используя вместо него json (или какой-то сжатый формат).

0 голосов
/ 14 апреля 2010

Я наконец-то решил проблему более или менее приятным образом.

Проблема в том, что rails очень эффективен при отбрасывании запросов с небольшими параметрами, но он очень медленный, если вы помещаете файл XML в параметр ...

Поскольку нет способа поместить xml в файл для его отправки, мы просто использовали промежуточное программное обеспечение для стойки, чтобы поместить запрос в файл на сервере.

Спасибо за ваши ответы в любом случае! Markus

...