У меня есть веб-приложение, которое я пытаюсь ускорить. Это выглядит так:
+------+
| |
| |
+------+
+------+
| |
| |
+------+
+------+
| |
| |
+------+
Каждый блок - это iFrame, содержащий Flash SWF и некоторый JavaScript. SWF загружает сторонний SWF, который используется для отображения информации. Я обнаружил, что время загрузки веб-приложения:
LoadTime = (4 seconds) * numberOfBoxes + (3 seconds)
Когда я только что вставил сторонний swf напрямую (без нашего swf или javascript), время загрузки:
LoadTime = (1 second) * numberOfBoxes + (2.5 seconds)
Я пытаюсь найти, где используются дополнительные 3 секунды, чтобы я мог ускорить наше веб-приложение. Я думаю, что кандидатами являются:
- Серверная обработка (jsp)
- Скачать
- Javascript
- Flash
- Другое
Скачать
Ниже приведено изображение загрузок с firebug. Я заменил имена файлов на их тип. Ни одна из загрузок не занимает особенно много времени после первого раза .
Одна достопримечательность отмечена красным. Красная область - это 3-секундный интервал между загрузкой My SWF
и загрузкой двух gif-файлов, за которыми следует Third Party SWF
. Я думаю, что эта пауза вызвана обработкой на клиенте (это правда?).
![enter image description here](https://i.stack.imgur.com/HBgVd.jpg)
Примечание. Красные столбцы на графике не являются частью диаграммы. Я добавил их, чтобы выделить пробел, где ничего не происходит на панели .net .
Я думаю, что из этого могу сделать вывод, что у меня есть проблема обработки на стороне клиента, которая подразумевает либо Flash, либо Javascript. Вопрос 1: Это правильно?
Редактировать: я добавил общее время одновременного скачивания:
- При наличии 1 фреймов время загрузки составляет 1,87 секунд
- При наличии 2 фреймов время загрузки составляет 2,29 секунд
- При наличии 5 фреймов время загрузки составляет 8,57 секунд
- При наличии 10 фреймов время загрузки составляет 10,62 секунд
- Когда есть 21 iframes время загрузки составляет 17.20 секунд
Javascript
Я использовал профилировщик в firebug для профилирования JavaScript. Вот результаты, когда на странице четыре компонента:
![enter image description here](https://i.stack.imgur.com/iV248.jpg)
Это означает, что JavaScript работает около 0,25 секунды / диаграмма. Это кажется мне разумным.
Вопрос 2: правильно ли я читаю эти результаты?
Это оставляет около 3,5 секунд / график обработки для чего-то еще.
Flash
Я вставил несколько операторов трассировки в код AS3. Мы слушаем событие, которое называется что-то вроде «Готово загрузка». Я поместил трассировку в первом методе инициализации и в методе «завершена загрузка». Вспышка глотает только 0,2 секунды / график между этими двумя операторами трассировки.
Вопрос 3: Есть ли лучший способ профилировать вспышку? Может ли это быть загрузка флэш-памяти или что-то в этом роде дополнительное время?
Другое
Я не уверен, есть ли другие вещи, кроме:
- Обработка на стороне сервера (jsp)
- Скачать
- Javascript
- Flash
Вопрос 4: Есть ли что-то, чего мне не хватает, может быть время для еды?
Следующие шаги
Я не уверен, каким должен быть мой следующий шаг. Я знаю, что что-то занимает около 1,5 - 3 секунд / график, но я не могу понять, что это такое. Я подозреваю, что это связано с моим SWF.
Вопрос 5: Как мне найти это пропущенное время?
Обновление : сводка по времени
Я все время делал графики для каждой вещи, которая могла занимать время.
- Ось X - это количество используемых диаграмм.
- Ось Y - время загрузки всех графиков.
Последний график, возможно, самый важный.Синие точки - это общее время загрузки (измерено с помощью секундомера).Красные точки - это количество времени, которое я учел (Javascript, время загрузки и время прошивки).
![enter image description here](https://i.stack.imgur.com/0q3nR.jpg)
Обновление : Browser Wars
Я нацеливаюсь на IE и Firefox (хотя это хороший бонус, если работают другие браузеры).Все результаты, представленные на данный момент, относятся к Firefox с запущенным firebug.Просто ради удовольствия я думал, что попробую в других браузерах.Я не думаю, что это приближает меня к решению, но интересно посмотреть, сколько IE отстой.
![enter image description here](https://i.stack.imgur.com/XLXbf.jpg)
Примечание. Перед запуском тестов для Firefox я очистил файлы cookie и кэш.Я не делал этого для IE или Chrome
Обновление : флэш-загрузка
Я выдавал console.log
операторов, хотя мой код пытался сделать медленный сэндвичкод.(Результаты выталкиваются в консоль Firebug).
Одна вещь, которую я заметил, которая мне кажется подозрительной, это то, что между тем, когда печатается мой последний журнал javascript, и когда печатается мой первый флэш-журнал, существует разрыв в 2,5 секунды.
17:08:29.973 - Javascript code
Time difference: 2510 ms
17:08:32.483 - Flash- myComponent.init()
Нужно ли Flash настраивать виртуальную машину для каждого SWF?Компилирует ли он скрипт действий на клиенте?
Что происходит между тем, когда я <embed>
мой swf и событием creationComplete
в моем основном .mxml
?