Как ускорить запуск javascript?
Доброго дня!
Столкнулся с такой проблемой:
На сайте содержится достаточное количество скрытых диалоговых окон, предназначенных для интерактивного взаимодействия с пользователем. Естественно, вывод этих окон требует наличия js.
Также каждая страница содержит Гугловскую рекламу, кое-что от Яндекса и, конечно же, счетчики Li и Top. Все это безобразие загружается после основного контента!
Суть: При загрузке страницы каждый подгружаемые с посторонних сайтов модули немного, но увеличивают время загрузки страницы в целом. Вследствие DOM модель страницы формируется, порой, очень долго... 5-10 сек, за это время пользователи уже пробуют кликать или взаимодействовать со страницей, что приводит к печальному результату, а именно - не работающим JS и не реагирующими ссылками.
Вопрос: Возможно ли запускать сценарии JS до полного формирования DOM или взаимодействовать средствами Ява на еще не до конца сформированную страницу?
В голову приходит мысль изначально прописывать простые ссылки на статичные страницы, а затем средствами Ява делать коррекцию. Это позволит немного снизить негатив от "не работающих ссылок", но проблему не решит =(
Какие могут быть варианты?
Разделы форума
- Привлечение посетителей
- Интернет-магазины и корпоративные сайты
- Контент-проекты и сообщества
- Монетизация сайтов
- Реальные примеры, истории успеха
- Футурология и тренды
- Юридические и финансовые вопросы
- Тестирование сайтов, советы
- Технические вопросы
- Технические аспекты SEO
- Хостинг
- Реклама компаний и сервисов
- Объявления фрилансеров
- Работа, поиск исполнителей
- Сайты ищут рекламодателей
- Об этом сайте
Теги к теме Как ускорить запуск javascript?
Вот что нашел http://yuiblog.com/blog/2008/07/22/non-blocking-sc... (раздел "Non-blocking scripts"), может помочь.
Вообще здесь вряд ли есть серебряная пуля. От какого-то js можно отказаться. Например, посмотреть, чьи скрипты грузятся дольше всего.
Или можно попробовать избавиться от jquery, если она не слишком серьезно используется, и переписать скрипты так, чтобы работали без нее.
Кстати, скрипты желательно вынести еще ниже, непосредственно к
</body>
. Может помочь.Считается, что если сайт не работает с выключенным js, это не очень хорошо. Что принципиально изменится, если форму добавления объявления сделать на отдельной странице, а не в окне?
Кроме этого из статьи ничего не понял... особенно про динамическое вписывание сценариев в head ... Ты понял как это работает?
Херня это все. Чтобы страница долго не грузилась не надо её "грузить" и все. Правда для этого необходимо серьезно подойти к разработке клиентского ПО для своих сайтов. А это мало кто делает. Абсолютное большинство владельцев сайтов налепит лепуху и удивляется почему скрипты не успевают за пользователем. Многие "разработчики" на JQuery не знают всех её возможностей и дублируют функционал, который уже предусмотрен фреймворком. В итоге получаются кривые плагины, которые владельцы сайтов с восторженным воплем "дааа!!! То, что надо!!!" немедленно водружаются себе.
По существу: прежде всего уберите лишние элементы из DOM. Все окна сделайте динамическими подгружаемыми одной единственной функцией. Постарайтесь избегать использовать обработчик onload без надобности. Запускайте скрипты в той последовательности, в которой у вас загружается страница. Примерно структура должна быть такой:
- Загружаем фреймворк если он есть (например jquery)
- Загружаем специально написанную для сайта функцию для загрузки контента и скриптов.
- Загружаем контент
- Обработчики контента (без onload)
- Счетчики
- Реклама
var js = document.createElement('script');
js.src = 'myscript.js';
var head = document.getElementsByTagName('head')[0];
head.appendChild(js);
Ссылки на некотрые js-скрипты можно добавлять при помощи js. Так можно контролировать порядок загрузки. Причем js начнет исполняться до того, как все скрипты будут подгружены.
Правда не знаю, есть ли подводные камни у этого трюка.
Хмм... надо поразмыслить... а DOM должен быть закончен?