Forum Webscript.Ru

Программирование => Теория, алгоритмы и стандарты => Тема начата: Greg от 22 Августа 2007, 13:28:26

Название: Загрузка HTML после всего остального
Отправлено: Greg от 22 Августа 2007, 13:28:26
Есть таая проблема: грузится HTML-страничка, в ней содержится JS-код:
1. в head:

это часть подгружает скрипт, которые содержит несколько массивов, элементами которых являются просто строки HTML-кода
2. в теле body

который выводит одну из строк.
Строка эта из себя представляет iframe, который в свою очередь в себя грузит flash.

однако загрузка его происходит после полной загрузки HTML и пользователь может не успеть увидеть мой flash, прочитав нужную информацию.

вопрос: как мне сделать подгрузку flash или плавающего фрейма раньше чем страница будет видна. тормозить ее не хотелось бы, поэтому лучше сначала другие варианты.

ну и интересно как все таки затормозить страницу до полной загрузки
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 22 Августа 2007, 15:12:10
Можно сделать какие-либо элементы страницы невидимыми, и делать их видимыми по тайм-ауту после загрузки страницы.
Название: Загрузка HTML после всего остального
Отправлено: Greg от 23 Августа 2007, 14:20:40
brainkiller
можно сделать всю страницу невидимой ;-) однако хотелось бы поступить чуть более корректно т.е. вывести загрузку баннера до загрузки страницы. именно реальной, а не ощущаемой как в случае заглушки всего контента
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 23 Августа 2007, 16:35:50
Greg
всю не стоит, ибо посетитель может решить, что сайт упал, и уйти. А вот притормозить вывод, допустим, контейнера с полезным текстом - другое дело. :-)

А вариантов-то немного...
Название: Загрузка HTML после всего остального
Отправлено: Greg от 24 Августа 2007, 12:52:48
вот как вариант - размещать iframe раньше все остального, а настройками CSS сделать так чтобы он встал в нужное место... может есть какие то подобные вещи?
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 25 Августа 2007, 01:55:10
В принципе, это не проблема, но это не снимает вопроса, успеет ли баннер загрузиться?
Название: Загрузка HTML после всего остального
Отправлено: Greg от 27 Августа 2007, 12:34:33
brainkiller
мда, к сожалению, HTML-технологи не дают менять код, придется как-то выкручиваться по-другому. вариант прятания текста, пока не загрузится баннер не видится мне хорошей альтернативой. представь, если баннер так и не загрузился, т.е. условие в ф-ии открытия содержимого не выполнилось...
Название: Загрузка HTML после всего остального
Отправлено: Altaxar от 27 Августа 2007, 12:53:47
Greg
Цитировать
HTML-технологи не дают менять код

HTML -нет, а JS (DOM) может без проблем сменит контент
...
, и не только его. но браузеры по разному к этому относятся, поэтому лучше в ...
Цитировать

т.е. условие в ф-ии открытия содержимого не выполнилось...

запусти таймер в JS если через n время не открылось, то открой.
только не забудь что у некоторых выключен JS.
Название: Загрузка HTML после всего остального
Отправлено: Greg от 27 Августа 2007, 13:14:49
Цитировать
Altaxar:
только не забудь что у некоторых выключен JS.

вот именно. вообще терпеть не могу этот JavaScript, уж очень он хлипок. вот как бы мне без него сделать?))
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 27 Августа 2007, 13:37:28
Greg
мне это в принципе не кажется хорошим решением, но другого я пока не вижу.

Altaxar
вообще, и скрывать можно тем же JS, тогда браузер с выключенными скриптами просто проигнорирует js-код и не станет скрывать контент. Впрочем, он в таком случае и баннер не выведет.
Название: Загрузка HTML после всего остального
Отправлено: Altaxar от 27 Августа 2007, 13:50:08
JavaScript не хлипок, и в основном он у многих включен, а выключают те которым надоели приколы на сайте с рекламой и с подобным.
JavaScript был создан для динамической редактирование страницы, для увеличение функционала страницы, но вот пошла тенденция выключать JS, чтобы оградить себя от назойливой рекламы, так же как и со спамом.
Название: Загрузка HTML после всего остального
Отправлено: Altaxar от 27 Августа 2007, 13:53:37
единственное что я вижу делать и для тех и для других, определить если выключен JS не сложно и вывести определенный HTML контент.
Название: Загрузка HTML после всего остального
Отправлено: Greg от 28 Августа 2007, 07:53:11
а если использовать серверные функционалы, типа nginx или squid. подвесить один раз баннер... может тогда он быстрее будет подгружаться?
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 28 Августа 2007, 19:13:33
Greg
ну не знаю... Сервер, конечно, будет шустрее баннер отдавать, но ползти к пользователю он будет все по той же линии. Заметна ли будет разница?

Кэширование баннера в данном случае тоже будет полумерой, т.к. сработает для конкретного пользователя только при повторном посещении и создаст неудобства при смене баннера.
Название: Загрузка HTML после всего остального
Отправлено: Greg от 29 Августа 2007, 07:46:13
Цитировать
brainkiller:
Кэширование баннера в данном случае тоже будет полумерой, т.к. сработает для конкретного пользователя только при повторном посещении и создаст неудобства при смене баннера.

тоже верно... вот как ни будь бы подготовить этот код, чтобы баннер подгрузился до начала загрузки всего содержимого... ничего в вголову не идет...
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 29 Августа 2007, 11:47:17
Greg
ну, чисто теоретически, можно отдавать пользователю страницу, состоящую из баннера и iframe, в который по событию onload страницы загружать сам сайт... :)
Название: Загрузка HTML после всего остального
Отправлено: Greg от 29 Августа 2007, 14:21:02
не, это еще хуже чем скрывать текст до полной загрузки... как вообще рассматривается iframe с точки зрения остального HTML-кода на странице? загрузка считается полностью выполненной при загрузке кода или же содержимого этого плавающего фрейма тоже?
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 29 Августа 2007, 15:31:26
Greg
А кто мешает создать на странице пустой фрейм, а по onload поменять его src на нужный? :)

Хотя все это, имхо, извращениями попахивает. Может, стоит просто забить? Если полезного контента на странице много, то посетитель какое-то время на ней все равно пробудет.
Название: Загрузка HTML после всего остального
Отправлено: Greg от 30 Августа 2007, 09:16:08
brainkiller
забить не выйдет - руководство требует решения проблемы. единственное что остается - оптимизировать PHP-код, который формирует код для вывода баннера...
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 30 Августа 2007, 19:36:28
Greg
а как сейчас реализована загрузка баннера - можно подробнее и, желательно, пошагово?
Название: Загрузка HTML после всего остального
Отправлено: Greg от 31 Августа 2007, 15:34:05
итак, попробую кратко, но подробно:
при загрузке страницы подгружается внешний js-файл, который формируется средствами PHP, его результат - js-код, который выводит код баннера.

как формируется js-файлик:
1. учитываются cookie, в которых отражено кол-во просмотров конкретного баннера
2. время, секция показа, день недели, лимит показа баннера, его активность. вся эта инфа содержится в БД
3. для каждой секции (положение на странице) генерируется код. генерируется для всех секций, потому что на разных страницах есть разные секции
4. сам js-файл выводит для каждой секции свой код.

есть пока мысли ускорить выполнение скрипта, который формирует коды для каждой секции. однако сам он небольшой, поэтому каких то достаточно крупных выйгрышей во времени вряд ли удастся добиться.

есть еще сомнения в скорости работы вывода самого кода баннера. тюк там есть заглушка: если у пользователя не установлен Flash ему показывается bitmap-изображение баннера, которое загружается вместе с баннером... часть кода там работает на vbscript
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 01 Сентября 2007, 12:50:09
А это не этот (http://forums.webscript.ru/showthread.php?s=&threadid=26028&msgnum=7) файл имеется в виду?
Название: Загрузка HTML после всего остального
Отправлено: Greg от 03 Сентября 2007, 07:50:14
ага, он, только сейчас он еще больше изменен
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 03 Сентября 2007, 17:05:54
Я так понимаю, что и страница, и баннерокрутилка - ваши. В таком случае, можно попробовать определить, какой именно баннер будет отгружен пользователю, еще вначале, на этапе формирования кода страницы, и передать в код не урл скрипта, который только тогда бы начал это делать, а уникальный урл самой флешки, которую можно отдать тем же nginx, к примеру, да еще и закэшировать у пользователя - что мы можем себе позволить, ибо  теперь урл указывает на статичный файл - для ускорения загрузки при повторном вызове той же флешки, если таковой произойдет.

[OFF]А вообще iframes - это принципиально? А то есть такая удобная штука, как swfobject (http://blog.deconcept.com/swfobject/). [/OFF]
Название: Загрузка HTML после всего остального
Отправлено: Greg от 05 Сентября 2007, 13:27:02
в общем, попробовал во всяких позах и пришел к выводу просто сменить партнера :))) буду переписывать полностью скрипты, которые отвечают за вывод кода так, чтобы его выполнение было минимальным просто разворочу все до основания и создам из пепла что нибудь новое

а аза swfobject спасибо! ;)
Название: Загрузка HTML после всего остального
Отправлено: brainkiller от 05 Сентября 2007, 19:33:26
Не стоит благодарности! А вот о результатах потом интересно было б услышать: что в итоге получилось и каким путем? ;)
Название: Загрузка HTML после всего остального
Отправлено: Greg от 07 Сентября 2007, 13:34:09
итак, итог моих изысканий.

в общем как в конце своего пути я и понял, собака была зарыта совсем в другом месте. на самом деле, загрузка HTML плавающего фрейма была нормальной. проблема заключалась в коряво написанном сценарии который формирует список баннеров для каждой секции. т.е. каждый раз для каждой секции вызывалась функция, которая была совершенно бредовой (например, использовались несколько вложенных запросов).

я просто оттуда выбросил все что не нужно и вывод для каждой секции я сделал одним запросом. вот такая штука.
Название: Re: Загрузка HTML после всего остального
Отправлено: memas от 01 Октября 2018, 13:51:21
так а по итогу, какой вариант лучше всего применить? что вам помогла?? у меня такая же проблема. И тоже ищу решение(