параллельная загрузка Java script и css файлов без...
-
Upload
alexey-vidanov -
Category
Documents
-
view
616 -
download
8
Transcript of параллельная загрузка Java script и css файлов без...
![Page 1: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/1.jpg)
Параллельная загрузка JavaScript и CSS файлов без прерывания
парсинга страницы
![Page 2: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/2.jpg)
Old school
• Известно, что следуя идеям старой школы, а именно, добавляя ссылки на JS и CSS в страницы, может обернуться большим временем загрузки страницы. Браузер отображает страницу по мере скачивания, но останавливается, если натыкается на тег script со ссылкой, до того момента, пока скрипт не будет загружен и выполнен.
![Page 3: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/3.jpg)
Способы ускорить загрузку страницы
• — поместить стили и скрипты прямо в страницу;— установка аттрибутов async/defer тегу script;— склеить все скрипты в один файл;— помесить ссылки на скрипты в конец body;— разместить все файлы на CDN/на разных хостах;— свой вариант…
![Page 4: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/4.jpg)
Помещение скриптов и стилей прямо в страницу
• Очевидно, что это решение подходит только для маленьких страниц, где не много скриптов стилей, так как в случае перезагрузки страницы будут повторно загружаться статические данные, и кеширование не может сработать.
![Page 5: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/5.jpg)
Установка атрибутов async/defer тегу script
![Page 6: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/6.jpg)
Установка атрибутов async/defer тегу script
![Page 7: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/7.jpg)
Склеивание скриптов и стилей
![Page 8: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/8.jpg)
Помещение stylesheet в head, а script — в конец body
• Достойно упоминания и использования, но в этом случае, как и в описанных выше, до момента document.ready могут быть неразрешённые зависимости между скриптами, и если для jQuery с плагинами это допустимо, то для варианта, когда мы загружаем библиотеку API Facebook'а или VKontakte, и хотим тут же запустить наш скрипт, который пошлёт на API запрос определения, залогинен ли пользователь, это сулит костылями, либо загрузкой библиотеки API в начале страницы, блокируя её отображение.
![Page 9: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/9.jpg)
Загрузка с CDN
Одноточечная дистрибуция (слева) и дистрибуция средствами CDN (справа)
![Page 10: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/10.jpg)
Свое решение
• Что если попробовать загружать скрипты в тот момент, пока страница грузится, но не выполнять их, и вообще скрывать от браузера, что это скрипты до того момента, пока они не догрузились, чтобы не блокировать первичное отображение страницы?
![Page 11: параллельная загрузка Java script и css файлов без прерывания](https://reader030.fdocument.pub/reader030/viewer/2022012400/557ee619d8b42a34628b481b/html5/thumbnails/11.jpg)
Заключение— встроить в head страницы script, указывающий на
загрузчик;— встроить inline скрипт, использующий загрузчик для подгрузки других скриптов и стилей;— объединять скрипты и стили, использующиеся только совместно, в один для минимизации количества HTTP запросов;— минимизировать скрипты и стили;— убедиться в том, что сервер пакует передаваемые данные gzip'ом;— убедиться в том, что сервер правильно кеширует;— осторожно и вдумчиво использовать сторонние CDN и дополнительные хосты.