Сейчас модно делать так, чтобы скрипты не тормозили загрузку страницы. И в развесистых проектах их грузят через всякие require.js, yepnope и т.п.
Это все клево, современно, но есть проблема. Страница показывается действительно быстро, но если там много картинок, то это сильно откладывает загрузку скриптов и полноценную инициализацию. Даже при том, что код загрузчика стоит в начале.
В интернетах пишут, что браузер успевает забить очередь загрузки картинками, потому что получает их src немедленно (со страницы), а пока загрузчик скриптов прочухается - пул коннектов уже забит.
Хочется чтобы было так:
1. Грузится страница
2. Грузятся CSS (и вот тут уже можно показывать)
3. Грузятся скрипты (вот тут начинает все полноценно работать)
4. Грузятся картинки, видео и т.п. (это можно быть довольно долго).
Есть финт, делать у картинок пустые src, потому яваскриптом перетаскивать из data-*. Но это не будет работать без жабаскрипта, не будет нормально индексироваться, что меня категорически не устраивает.
Еще была идея в начале страницы яваскриптом задавать класс, который картинкам проставит display:none, но оказалось, что они все равно будут грузиться.
Пока додумался только до того, что под каждую страницу ручками клепать зависимости, и втыкать их в head с атрибутом async. Тогда картинки не смогут их «обогнать». Но, блин, гимор же:
- сначала пердячим паром делать то, на что заточен yepnope
- потом еще yepnope-у объяснять, что какие-то вещи грузить не надо (потому что их напрямую воткнули).
- писать свои обработчики, которые трекают загрузку воткнутых вручную скриптов
Может кто-то знает более простой способ?