Просмотр полной версии : Одновременный вызов нескольких .loadClip()
Друзья, прошу подсказки - разумно и корректно ли инициировать (открывать) одновременно несколько загрузок MovieCLipLoader.loadClip() или MovieClip.loadMovie, или же необходимо делать это последовательно?
Т.е., скажем, такой фрагмент как-либо негативно скажется на процессе загрузки или производительности?:
for (var i = 0; i<100; i++) {
loader.loadClip("url", this["cl_"+i]);
}
или лучше обработать последовательно:
loader.onLoadInit = function() {
nextClip++;
this.loadClip("url", _root["cl_"+nextClip]);
};
по опыту: первая схема (единовременный запуск) отлично работает, о корректности не задумывался, хотя кто запрещал вызывать метод сколько надо раз?
silin, спасибо, просто иногда вот задумываешься о корректности.. :) как оно на уровне плэйера при таком варианте происходит...?
Про одновременность загрузок, где то упоминалось, что есть ограничение на кол-во одновременных загрузок...
sem1313 , не могли бы вспомнить конкретнее?
а что в этом случае будет с листенерами? я вызывал всегда последовательно. Сейчас делаю галерею и возникает ситуация когда в процессе загрузки юзер может нажать на паузу и опять на плей, соответственно лоадеру дается команда грузить картинку в тот же клип. Может у меня ошибка где то в другом месте, но по моему листенеры в этом случае отрабатывают два раза. Сейчас делаю destroyObject и обьявляю MovieClipLoader в начале метода. До результата не добрался еще.
Я могу напомнить. Например у IE по умолчанию идет только две загрузке одновременно.
iNils, по мойму гораздо больше можно одновременно загружать фоток... Если использовать не через getURL... Ведь инициализация загрузки осуществляется Flash'ем, а не Explorer... Хотя фиг знает, но когда то упоминалось что то около 15-18...
vic: я не помню где это было, но было где то месяц назад... если это поможет... в поиске посмотрите...
iNils: но это ведь не значит, что остальные не загрузятся?
во всяком случае все благополучно грузится и для десятка-другого (может и не одновременно, не знаю, как там плагин с браузером разбирается, канеш вопрос.
2vic_ : да как бы ничего с листенерами и не будет: сколько событий(загрузок) столько и вызовов..
2silin: плохо. я наткнулся на грабли - остановить загрузку нельзя - unloadClip() не останавливает загрузку, следовательно в моем случае загрузчик сработает дважды, ну и понеслась цепочка. Баг, еще год назад постили в livedocs.macromedia
2 sem1313: Причем тут инициализация? Загрузка идет через IE. Я просто предлагаю попробывать, а не спорить со мной и что то доказывать.
2 silin: Загрузятся, если не будет превышено время ожидания. Ведь не известно, какая скорость будет у пользователя.
Вот пример. Сделал флешку с таким кодом, положил на сайт и вызвал ее.
for (var i=0; i<8; i++){
var snd:Sound = new Sound ()
snd.loadSound("1.mp3?"+ Math.random())
}С помощью плагина httpwatch отслеживаю процесс запросов и загрузки. Запрос на загрузку ушел сразу к 8 файлам. Но! Сначала начали грузились только первые два, видите у них есть время ушедшее на загрузку. Как только загрузился один, сразу начал грузится третий, а после второго четвертый. Остальные стоят в очереди.
спасиб, ценная информация: надо поаккуратнее с этим..
iNils, я и не спорю... тем более не доказываю...
Просто помнится мне, что была такая тема, где обсуждалось сколько загрузок одновременно поддерживает FLASH(а не Explorer)... И помойму была озвучена цифра около 20...
Для пользователей IE
Тем кому хочется обойти данное ограничение, надо сделать тектовый файл с расширением reg и записать туда данный текст, а после запустить фалй и внести данные в реестр (можно и ручками забить).
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"MaxConnectionsPer1_0Server"=dword:00000014
"MaxConnectionsPerServer"=dword:0000000a
Теперь число одновременных коннектов к серверам 20 и одновременных даунлоадов с одного сервера 10.
Забыл пояснить...
Имеется ввиду сколько MovieClipLoader'ов одновременно может отслеживаться/работать...
Теперь число одновременных коннектов к серверам 20 и одновременных даунлоадов с одного сервера 10
И что, это нужно будет прописывать каждому посетителю сайта?
И что, это нужно будет прописывать каждому посетителю сайта?
Тем кому хочется обойти данное ограничение...Например мне :bye:
iNils, про одновременную поддержку загрузок в Explorer понятно,... но на сколько я понимаю вопрос состоял в том, сколько loader'ов одновременно может создать Flash и сколько из них он может обрабатывать...
но на сколько я понимаю вопрос состоял в том, сколько loader'ов одновременно может создать Flash и сколько из них он может обрабатывать...Я думаю автору интересно, не сколько может конкретно сам флеш, а в совокупности с браузером. Если так, тогда разница сколько, если самый распостранный браузер сможет по умолчанию обрабатывать только две загрузки одноврменно. А дальше, как я уже говорил все упирается в скорость пользователя и превышение ожидания сервера.
Если же автора это не интересует, то почему бы не создать 10, 100, 200 загрузок и не посмотреть?
Сначала начали грузились только первые два, видите у них есть время ушедшее на загрузку. Как только загрузился один, сразу начал грузится третий, а после второго четвертый. Остальные стоят в очереди.
Ну если по твоему, то браузер "обслужит" все запросы на закачку...
Если так, то остается только один вопрос - сколько закачек сможет обеспечить/обработать Flash...
Вот в этом и состояла суть вопроса... Наверно...
Ну если по твоему, то браузер "обслужит" все запросы на закачку...
Если так, то остается только один вопрос - сколько закачек сможет обеспечить/обработать Flash...
Вот в этом и состояла суть вопроса... Наверно...
Вопрос стоял так: "разумно и корректно ли инициировать (открывать) одновременно несколько загрузок"
Сделал небольшой тест, loadMovie загрузил одновременно 1225 картинок.
Bar_Duck13
08.10.2006, 00:40
Исходник пожалуйста!
iNils, Вы совершенно верно поняли суть вопроса. Интересовала конечно связка flash-браузер. Спасибо! Правильно я понимаю, что время ожидания сервера - это минимальное из двух времен - времени ожидания браузера и параметра timeOut, в настройках сервера? И в какой момент страница считается полностью загруженной - когда прогрузится последний ее элемент? ... в httpwatch что-то не понял какой параметр отвечает за полную загрузку страницы.
Влезу и попробую поставить все точки над i
iNils, прав на счет 2х загрузок одновременно для ИЕ. Про очередь загрузок тоже, причем если одновременно запустить несколько loadClip, или грузить с помощью MovieClipLoader'a одновременно несколько картинок (больше 2 для ИЕ) то вы можете получать статус процесса загрузки только для этих 2 картинок, которые грузятся в текущий момент. У остальных картинок которые находлятся в этой очерди getBytesTotal равен -1 (если я не ошибаюсь, или 0... короче неверный).
Сделал небольшой тест, loadMovie загрузил одновременно 1225 картинок.
он будет грузить хоть мильен, только по 2 одновременно ). лишь бы ресурсов хватило.
В качестве сценарев для загрузки нескольких картинок могу предложить такие варианты:
- Если нужно чтобы просто загрузились картинки, без контроля над этим процессом (отмена загрузки, вывод количества байт/загруженый картинок, еще чего нить). То грузи все одновременно.
- Если нужен контроль над загрузкой по типу "всего загружено картинок/байт", или Нужно прервать процесс загрузки, то лучще всего организовывай свою "внутреннюю", очередь загрузки. Т.е. грузи картинки по очереди, загрузил одну, начинай загрузку следующей. В качестве полного изврата, можешь сделать очередь с двумя потоками загрузки, т.е. теже 2 мовиклиплоадера. %)
Я обычно использую 2й вариант, он более надежный. 1й неконтролируемый ( хотя очень удобный.
__i, ну впринципе что в этом варианте
Если нужно чтобы просто загрузились картинки, без контроля над этим процессом (отмена загрузки, вывод количества байт/загруженый картинок, еще чего нить). То грузи все одновременно
мне мешает отменить загрузку? можно для отмены загрузки пройтись по списку, проверить getBytesTotal() на -1 или 0 и отменить загрузку, впринципе...
Жаль нельзя выяснить размер всех картинок в очереди и дальше сделать общий точный прогрессбар.
А про время ожидания сервера можно поподробнее?
можно для отмены загрузки пройтись по списку, проверить getBytesTotal() на -1 или 0 и отменить загрузку, впринципе...
если у тебя есть такой список то не рационально использовать первый способ, он рационален в случае "послал на загрузку-забыл".
Жаль нельзя выяснить размер всех картинок в очереди и дальше сделать общий точный прогрессбар.
Почему же нельзя.
Очень даже можно.
каждая загружаемая картинка отдает свои bytesTotal и bytesLoaded
Все это совершенно спокойно сумируется.
отдает только тогда, когда к ней обратиться браузер, а до того времени пока первые 2 картинки в IE (и одна в FF, вроде...) не загрузятся - будет стоять в очереди
запрос на загрузку, сдается мне, пройдет сразу.
Я неоднократно использовал загрузку нескольких клипов сразу с прелоадером для каждого из них - визуально, по крайней мере я видел, что прогресс идет у всех сразу. Не знаю какая там механика на уровне браузера идет - но повторю ВИЗУАЛЬНО, я вижу прогресс для всех клипов, что позволяет мне думать, что все необходимые данные каждый клип получает сразу.
для примера хотя бы вот эту ссылку посмотрите, (раздел nieuws/inspiratie кликайте для наглядности, если конечно у вас соединение не с космическими скоростями)
http://demo.dcafe.ru/hal2/flash/
loadMovie в IE работает не по очереди а скопом. точнее очередь как бы зацикливается - первая пара получила чать данных, вторая пара и т.д. и опять с начала и до полной загрузки.
а вот в фоксе вроде это уже не работает. и все загружается по очереди (в фоксе одна загрузка вроде).
а LoadClip работает по очереди везде (IE фокс).
а таймаут сработает если сервер вообще не будет отвечать какое то время. вроде так.
а таймаут сработает если сервер вообще не будет отвечать какое то время. вроде так.
это таймаут браузера, так? а серверный таймаут?
с loadClip/loadMovie щас буду проверять
Есть еще такой момент... Недавно пробовал сделать что-то вроде предзагрузки (просто по ходу работы сайта загружать все картинки, которые там могут встретиться, по списку). Что интересно, класс наследованый от MovieClipLoadera отказался грузить 2 картинки одновременно, даже если начало загрузки было разнесено по времени. При чем загрузка первой картинки прекращалась даже без сообщения об ошибке, так, как будто никто и не собирался ее загружать.
Если на работе будет пару свободных минут, выложу исходник.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.