HTTPService работает очень медленно, отправляя на сервер 10 000 строк XML.

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

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

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

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

Маркус

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

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


person Markus    schedule 06.04.2010    source источник
comment
Какая скорость передачи данных у соединения? какой размер XML? Можете ли вы использовать сжатие при передаче?   -  person Oded    schedule 06.04.2010
comment
А) Второй комментарий Одеда. Б) Используйте то, что позволит использовать AMF.   -  person jeremy.mooer    schedule 06.04.2010


Ответы (5)


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

person Tam    schedule 06.04.2010

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

person Jason    schedule 06.04.2010

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

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

вот полезная ссылка: руководство по Adobe BlazeDS

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

person xhuur    schedule 06.04.2010

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

OR

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

person taudep    schedule 06.04.2010
comment
привет, taudep, я пытался использовать FileReference, но как я могу поместить свою строку в файл? - person Markus; 07.04.2010
comment
Я думаю, это не сработает. Похоже, что только локально сохраненный файл может быть загружен таким образом ... - person Markus; 07.04.2010

В конце концов я решил проблему более-менее красиво.

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

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

В любом случае спасибо за ответы! Маркус

person Markus    schedule 14.04.2010