PDA

Просмотр полной версии : Загрузка нескольких ХМЛ с разных серверов, как это лучше релизовать?


__i
26.06.2006, 03:36
Что нужно сделать:
Есть список URL с которых нужно загрузить ХМЛ файлы (до 20-30 урл).
Порядок загрузки неважен (чем быстрее все загрузяться тем лучше, при получении ХМЛ, он сразу отображаеться, дабы пользовотелю было на что смотреть и не скучать%)) ), если происходит ошибка загрузки для какогото урл, то нужно сделать несколько попыток загрузить инфу. Каждый ХМЛ должен "знать" c какого хоста он приехал.

На эту тему у нас с Reijii возник спор.

Я предложил сделать класец оберточку для ХМЛ, который кроме самого ХМЛ еще хранит инфу об Урле, хранителе/владельце ХМЛ и количестве сделаных попыток (если происходят сбои при соединении). Затем сразу начинаем грузить все ХМЛ, а они по мере загрузки сообщают кто, и откуда загрузился.

Reijii предложил поочереди грузить ХМЛ, так мы тоже знаем откуда он пришел (УРЛ) ну и тд.

Идея спора в том, что Reijii говорит "машина клиента здохнет от напруги", я тестировал - вроде ниче не здыхает %).

Опять же думаю, что если мы начнем грузить толпой, то загрузиться конешно быстрее самый мелкий/с быстрого сервера, ХМЛ и отобразиться, т.е. будет чем развлечь юзверя.

Если применить метод Reijii то может возникнуть ситуация - первый ХМЛ в списке, самый большой, тормознутый и вообще не хочет грузиться - т.е. нечем развлекать пользователя, пока возимся с этим ХМЛ.

Ну я естественно защищаю свой алгоритм, а он свой %)), кто что может сказать/посоветовать но этому поводу?

зы. в каждом получаемом ХМЛ может быть от 1 до 150-200 однотипных нодов инфы.

St. Father
26.06.2006, 07:26
Юзверя надо прелоадером развлекать :)
(Можно показать скока ты всего грузишь и как быстро ты это умеешь делать... => вариант Reijii)
А если твой вариант действительно грузит из всей толпы самый маленький хмл быстрее, чем вариант Reijii грузит первую толстую ХМЛ (проверить имхо надо) - то флаг тебе :)
имхо

Reijii
26.06.2006, 11:21
Вариант Reijii лучше имхо :) развлекай его как сказал St. Father прелоадером ) зато по результату пользователь начнет работать со всем объемом данных а не с огрызками, которые быстрее загрузились :)

__i
26.06.2006, 11:31
не в варианте Reijii все равно придеться после загрузки первого показывать его %)) :p

Reijii
26.06.2006, 11:32
зачем ? )
ну показывать то можно но имхо не стоит давать работать )

iNils
26.06.2006, 11:34
Я что то не понимаю, вы вроде обратились сюда с целью что бы вас другие рассудили, а вы получается что вы опять спорить между собой начали.

__i
26.06.2006, 19:04
че нету никаких идей/советов? кто-то же делал такое? поделились бы впечатлением

iNils
26.06.2006, 20:02
че нету никаких идей/советов? кто-то же делал такое? поделились бы впечатлением
Делалось... исходя из конкретных задач.

Nirth
26.06.2006, 20:07
Вы знаете что меня больше всего бесит на флэш сайтах? это прелоадеры.
На хтмл сайте я могу хотя бы начать читать часть текста, или посмотреть 30% картинки.

__i
26.06.2006, 20:09
поделись конкретными задачами и способами (читай алгоритмами) и почему именно так а не подругому, если можно.

St. Father
27.06.2006, 15:18
Вы знаете что меня больше всего бесит на флэш сайтах? это прелоадеры.
На хтмл сайте я могу хотя бы начать читать часть текста, или посмотреть 30% картинки.
каждому свое.
если подумать - действительно, прелоадеры - это типа костыль.
хотя я вот не видел никогда, чтобы в пустом клипе было прописано что-то типа

this.loadMovie ("shapka.swf");
this.loadMovie ("menu.swf");
this.loadMovie ("content.swf");
this.loadMovie ("footer.swf");

и типа что быстрее загрузится...
сама суть флэша теряется........
а смотреть дерганную анимацию никому не нравится - это 100% (ведь все еще туева хуча народу сидит на мопедах)

iNils
27.06.2006, 15:23
this.loadMovie ("shapka.swf");
this.loadMovie ("menu.swf");
this.loadMovie ("content.swf");
this.loadMovie ("footer.swf");

и типа что быстрее загрузится...В IE по умолчанию грузится не более двух объектов одновременно.

St. Father
27.06.2006, 15:28
малость невоткнул. флэшовый оцх или сам ие хтмльный контент грузит макс. по 2? :)
...в любом случае спасибо за просвещение, но сути не меняет имхо.

iNils
27.06.2006, 15:51
http://www.gazeta.ru/techzone/2005/03/28_a_259943.shtml

St. Father
27.06.2006, 15:55
почетайу. пасиба.

__i
27.06.2006, 18:44
this.loadMovie ("shapka.swf");
this.loadMovie ("menu.swf");
this.loadMovie ("content.swf");
this.loadMovie ("footer.swf");

почему бы и нет? Если мне нужно загрузить несколько картинок, и мне не важды подробности об их "жизни" то я гружу сразу их "толпу" %)
кстате твой пример не работоспособен (вернее будет работать не так ка те хотелось %) )

и типа что быстрее загрузится...
сама суть флэша теряется........
а смотреть дерганную анимацию никому не нравится - это 100% (ведь все еще туева хуча народу сидит на мопедах)

Я гружу не анимацию, а ХМЛ (он не дергаеться %) ). Смысл всей затеи как можно быстрей подогнать пользователю инфу (чтобы ему было над хоть над чем-то повтыкать, а не смотреть на прилоадер 3 часа, пока все сервера раздупляться).

iNils. про 2 файла незнал (вернее натыкался на это, но думал что виноват флеш, а не ИЕ).

Double
27.06.2006, 19:17
блин, так просто всё. если инициируем загрузку всей кучи, то на модемном соединении даже самый маленький будет показан после того, как "протиснется" в общем потоке загружаемых данных. это может случиться очень нескоро (предположим, что все грузятся с одинаковой соростью и равны по размеру => все отобразятся после полной загрузки одновременно). а при GPRS-связи? Для "слабых" юзерских каналов метод Reijii предпочтительней. На быстром канале метод __i может быть эффективнее. Т.е. всё зависит от конкретной задачи (универсальность подхода к юзерскому каналу + разница во времени загрузки даных), т.е. именно то, о чём сказал iNils. В случае подгрузки данных, файл которых имеет в заголовке сведения о размере, можно говорить о изначальной оценке картинки и построении наилучшего алгоритма. В случае с xml вы сравниваете круглое с солёным...

St. Father
28.06.2006, 13:25
2 __i
по поводу this.loadMovie > да ))) немного поспешил)))))
по второму квоту - это уже был оффтоп)) (ответ Nirth`y)