Магазин портативной техники "Портатив"
:: на главную
Flash > Неожиданные применения Flash

5. Определяем скорость соединения с интернетом.
Это же самое действие GetTimer можно применить и для оценки качества коннекта посетителей вашей странички. Здесь все намного проще. Если используется цикл If Frame Is Loaded (для стандартных задач типа Loading...), просто засекаем время в самом первом кадре и еще раз засекаем после окончания этого цикла. Объем данных загружаемых пользователем в этом цикле нам известен, время загрузки узнаем как разницу двух значений GetTimer - получается, что скорость соединения вычислить не просто, а очень просто :) Можно еще для этой же цели подгрузить пару комбинаций из "невидимых" роликов весом по полтора-два килобайта с паузой секунды в 3-4 (а вдруг как раз в этот момент попадется ретрейн ? :) Тогда время засекать лучше действиями в подгружаемых роликах, а переменные хранить в основном. В первом из подгружаемых (например up_1.swf ) роликов получится три Blank Keyframes и действия похожие на что-то вроде:
в первом кадре
Set Variable: "_level0:time1" = GetTimer 
во втором
Load Movie ("up_up_1.swf", 1)
и в третьем
Set Variable: "_level0:time2" = GetTimer

где up_up_1.swf это дополнительный подгружаемый ролик весом 1-2 кб состоящий из двух кадров - первый кадр пустой с действием Stop, а второй кадр содержит какой-нибудь объект весящий 1-2 кб. Для пущей точности из основного ролика нужно подгружать эту комбинацию раза 2-3 и брать среднюю разницу time2-time1. При этом просто нужно иметь две-три переименованных копии up.swf и up_up.swf. Это совсем не так страшно как кажется - на самом деле такой подход очень удобен. Для определения скорости не нужно будет каждый раз подбирать соотношение времени и объема данных - нужно только иметь эти 2 ролика up.swf и up_up.swf (две-три пары под разными именами) и, подобрав один раз константу в соотношении время загрузки - величина файла, просто загружать из любой точки ролика up_х.swf и в любой другой точке ролика вычислять скорость коннекта формулой N/(time2 - time1), где N - известная (подобранная раз и навсегда) константа. При этом в основном ролике ничего отображаться не будет. Как уже говорилось, для пущей точности скорость коннекта лучше посчитать минимум 2 раза с паузой 2-4 секунды (комбинация up_1.swf и up_up1.swf может посылать в основной ролик константы time1 и time2, а, к примеру, up_2.swf и up_up_2.swf - time3 и time4). Кстати, вычисляя скорость, не забывайте задавать верхний предел возможного, чтобы отсеять, подгружаемые из кэша браузера, ролики.
Поняли что-нибудь ? :) Честно говоря, я тоже :) Но более понятного и удобного варианта, я например, найти не смог - виноват :)


<< назад содержание вперед >>