SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Параллельная загрузка JavaScript
 и CSS файлов без прерывания
      парсинга страницы
Old school
• Известно, что следуя идеям старой школы,
  а именно, добавляя ссылки на JS и CSS в
  страницы, может обернуться большим
  временем загрузки страницы. Браузер
  отображает страницу по мере скачивания,
  но останавливается, если натыкается на тег
  script со ссылкой, до того момента, пока
  скрипт не будет загружен и выполнен.
Способы ускорить загрузку
            страницы
• — поместить стили и скрипты прямо в
  страницу;
  — установка аттрибутов async/defer тегу
  script;
  — склеить все скрипты в один файл;
  — помесить ссылки на скрипты в конец
  body;
  — разместить все файлы на CDN/на разных
  хостах;
  — свой вариант…
Помещение скриптов и стилей
        прямо в страницу
• Очевидно, что это решение подходит
  только для маленьких страниц, где не
  много скриптов стилей, так как в случае
  перезагрузки страницы будут повторно
  загружаться статические данные, и
  кеширование не может сработать.
Установка атрибутов async/defer
           тегу script
Установка атрибутов async/defer
           тегу script
Склеивание скриптов и стилей
Помещение stylesheet в head, а
       script — в конец body
• Достойно упоминания и использования, но в этом
  случае, как и в описанных выше, до момента
  document.ready могут быть неразрешённые
  зависимости между скриптами, и если для jQuery с
  плагинами это допустимо, то для варианта, когда
  мы загружаем библиотеку API Facebook'а или
  VKontakte, и хотим тут же запустить наш скрипт,
  который пошлёт на API запрос определения,
  залогинен ли пользователь, это сулит костылями,
  либо загрузкой библиотеки API в начале страницы,
  блокируя её отображение.
Загрузка с CDN




Одноточечная дистрибуция (слева) и дистрибуция средствами CDN (справа)
Свое решение
• Что если попробовать загружать скрипты в
  тот момент, пока страница грузится, но не
  выполнять их, и вообще скрывать от
  браузера, что это скрипты до того момента,
  пока они не догрузились, чтобы не
  блокировать первичное отображение
  страницы?
Заключение
— встроить в head страницы script, указывающий на
 загрузчик;
 — встроить inline скрипт, использующий загрузчик
 для подгрузки других скриптов и стилей;
 — объединять скрипты и стили, использующиеся
 только совместно, в один для минимизации
 количества HTTP запросов;
 — минимизировать скрипты и стили;
 — убедиться в том, что сервер пакует
 передаваемые данные gzip'ом;
 — убедиться в том, что сервер правильно кеширует;
 — осторожно и вдумчиво использовать сторонние
 CDN и дополнительные хосты.

Weitere ähnliche Inhalte

Was ist angesagt?

В offline и обратно
В offline и обратноВ offline и обратно
В offline и обратноDen Ilin
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновAnton Piskunov
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Александр Ежов
 
"Как дешево переделать традиционное веб-приложение в single-page", Максим Пше...
"Как дешево переделать традиционное веб-приложение в single-page", Максим Пше..."Как дешево переделать традиционное веб-приложение в single-page", Максим Пше...
"Как дешево переделать традиционное веб-приложение в single-page", Максим Пше...MoscowJS
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentialsPavlo Iuriichuk
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Ontico
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработкеITCrowd Almaty
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMPavel Tsukanov
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времениAndriy Samilyak
 
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...Sabrina Zeidan
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyMoscowJS
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
 
Web app syncronizations, Sockets, tricks and hacks
Web app syncronizations, Sockets, tricks and hacks Web app syncronizations, Sockets, tricks and hacks
Web app syncronizations, Sockets, tricks and hacks Egor Malkevich
 
Chrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаChrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаAlexandr Mikhaylenko
 

Was ist angesagt? (20)

В offline и обратно
В offline и обратноВ offline и обратно
В offline и обратно
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015
 
"Как дешево переделать традиционное веб-приложение в single-page", Максим Пше...
"Как дешево переделать традиционное веб-приложение в single-page", Максим Пше..."Как дешево переделать традиционное веб-приложение в single-page", Максим Пше...
"Как дешево переделать традиционное веб-приложение в single-page", Максим Пше...
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentials
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработке
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
Internet explorer e9 beta rus
Internet explorer e9 beta rusInternet explorer e9 beta rus
Internet explorer e9 beta rus
 
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkey
 
How to become Famo.us
How to become Famo.usHow to become Famo.us
How to become Famo.us
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
 
Web app syncronizations, Sockets, tricks and hacks
Web app syncronizations, Sockets, tricks and hacks Web app syncronizations, Sockets, tricks and hacks
Web app syncronizations, Sockets, tricks and hacks
 
Cakephp
CakephpCakephp
Cakephp
 
Web-browser crash test via geodata
Web-browser crash test via geodataWeb-browser crash test via geodata
Web-browser crash test via geodata
 
Chrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработкаChrome push notifications. Анатомия и разработка
Chrome push notifications. Анатомия и разработка
 

Andere mochten auch

Reviscopa núm.21 Escola Jaume Balmes
Reviscopa núm.21  Escola Jaume BalmesReviscopa núm.21  Escola Jaume Balmes
Reviscopa núm.21 Escola Jaume Balmesjbalmesprat
 
Reviscopa núm.26 Escola Jaume Balmes
Reviscopa núm.26  Escola Jaume BalmesReviscopa núm.26  Escola Jaume Balmes
Reviscopa núm.26 Escola Jaume Balmesjbalmesprat
 
Human Computer Interaction Presentation
Human Computer Interaction PresentationHuman Computer Interaction Presentation
Human Computer Interaction PresentationIheanyi Ekechukwu
 
International education program_guide_201164284 (3)
International education program_guide_201164284 (3)International education program_guide_201164284 (3)
International education program_guide_201164284 (3)Future Link Consultants
 
NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3Han-Wei Liao
 
Advert Pitch
Advert PitchAdvert Pitch
Advert Pitchjbier
 
Reviscopa Núm.13
Reviscopa Núm.13Reviscopa Núm.13
Reviscopa Núm.13jbalmesprat
 
NTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal FinalNTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal FinalHan-Wei Liao
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislationTgarmon34
 
Linkedin Company Page Guide
Linkedin Company Page GuideLinkedin Company Page Guide
Linkedin Company Page GuideAchmedTarrass
 
Deloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes PresentationDeloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes PresentationMargaret Hartwell
 
Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?SwordSharp Studios
 
Value proposition for social media marketing
Value proposition for social media marketingValue proposition for social media marketing
Value proposition for social media marketingPavan Krishnaa Mulpur
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse민웅 이
 
Spiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfareSpiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfareSwordSharp Studios
 

Andere mochten auch (20)

Reviscopa núm.21 Escola Jaume Balmes
Reviscopa núm.21  Escola Jaume BalmesReviscopa núm.21  Escola Jaume Balmes
Reviscopa núm.21 Escola Jaume Balmes
 
Reviscopa núm.26 Escola Jaume Balmes
Reviscopa núm.26  Escola Jaume BalmesReviscopa núm.26  Escola Jaume Balmes
Reviscopa núm.26 Escola Jaume Balmes
 
Human Computer Interaction Presentation
Human Computer Interaction PresentationHuman Computer Interaction Presentation
Human Computer Interaction Presentation
 
International education program_guide_201164284 (3)
International education program_guide_201164284 (3)International education program_guide_201164284 (3)
International education program_guide_201164284 (3)
 
NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3NTU & NTUST Tangible Interaction Design Project Proposal 3
NTU & NTUST Tangible Interaction Design Project Proposal 3
 
Advert Pitch
Advert PitchAdvert Pitch
Advert Pitch
 
Reviscopa Núm.13
Reviscopa Núm.13Reviscopa Núm.13
Reviscopa Núm.13
 
NTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal FinalNTU & NTUST Tangible Interaction Design Project Proposal Final
NTU & NTUST Tangible Interaction Design Project Proposal Final
 
Internet decency legislation
Internet decency legislationInternet decency legislation
Internet decency legislation
 
Info 1 teorica color
Info 1   teorica colorInfo 1   teorica color
Info 1 teorica color
 
Linkedin Company Page Guide
Linkedin Company Page GuideLinkedin Company Page Guide
Linkedin Company Page Guide
 
Deloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes PresentationDeloitte Private Club/Aamplify Archetypes Presentation
Deloitte Private Club/Aamplify Archetypes Presentation
 
Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?Why does God allow Bad things to happen to Good people?
Why does God allow Bad things to happen to Good people?
 
Value proposition for social media marketing
Value proposition for social media marketingValue proposition for social media marketing
Value proposition for social media marketing
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse
 
Can You Lose Your Salvation?
Can You Lose Your Salvation?Can You Lose Your Salvation?
Can You Lose Your Salvation?
 
Spiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfareSpiritual WARfare vs Spiritual WELfare
Spiritual WARfare vs Spiritual WELfare
 
#magneticarchetypes
#magneticarchetypes#magneticarchetypes
#magneticarchetypes
 
Pull Test Presentation
Pull Test PresentationPull Test Presentation
Pull Test Presentation
 
Ecg Signal Processing
Ecg Signal ProcessingEcg Signal Processing
Ecg Signal Processing
 

Ähnlich wie параллельная загрузка Java script и css файлов без прерывания

Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11olgaoov
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheIgor Sazonov
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalVlad Savitsky
 
Переход сайта на Https - инструкция от WebCanape
Переход сайта на Https - инструкция от WebCanapeПереход сайта на Https - инструкция от WebCanape
Переход сайта на Https - инструкция от WebCanapeWebCanape
 
блочная верстка
блочная версткаблочная верстка
блочная версткаsivorka
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Alexey Kostin
 
Получаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетПолучаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетPyNSK
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NETVitaly Baum
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extensionchaykaborya
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukInterSystems
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkCUSTIS
 

Ähnlich wie параллельная загрузка Java script и css файлов без прерывания (20)

Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
Assets Pipeline
Assets PipelineAssets Pipeline
Assets Pipeline
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
 
Web tehn
Web tehnWeb tehn
Web tehn
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
 
Переход сайта на Https - инструкция от WebCanape
Переход сайта на Https - инструкция от WebCanapeПереход сайта на Https - инструкция от WebCanape
Переход сайта на Https - инструкция от WebCanape
 
блочная верстка
блочная версткаблочная верстка
блочная верстка
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
 
5 urok
5 urok5 urok
5 urok
 
Получаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетПолучаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работает
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring Framework
 

параллельная загрузка Java script и css файлов без прерывания

  • 1. Параллельная загрузка JavaScript и CSS файлов без прерывания парсинга страницы
  • 2. Old school • Известно, что следуя идеям старой школы, а именно, добавляя ссылки на JS и CSS в страницы, может обернуться большим временем загрузки страницы. Браузер отображает страницу по мере скачивания, но останавливается, если натыкается на тег script со ссылкой, до того момента, пока скрипт не будет загружен и выполнен.
  • 3. Способы ускорить загрузку страницы • — поместить стили и скрипты прямо в страницу; — установка аттрибутов async/defer тегу script; — склеить все скрипты в один файл; — помесить ссылки на скрипты в конец body; — разместить все файлы на CDN/на разных хостах; — свой вариант…
  • 4. Помещение скриптов и стилей прямо в страницу • Очевидно, что это решение подходит только для маленьких страниц, где не много скриптов стилей, так как в случае перезагрузки страницы будут повторно загружаться статические данные, и кеширование не может сработать.
  • 8. Помещение stylesheet в head, а script — в конец body • Достойно упоминания и использования, но в этом случае, как и в описанных выше, до момента document.ready могут быть неразрешённые зависимости между скриптами, и если для jQuery с плагинами это допустимо, то для варианта, когда мы загружаем библиотеку API Facebook'а или VKontakte, и хотим тут же запустить наш скрипт, который пошлёт на API запрос определения, залогинен ли пользователь, это сулит костылями, либо загрузкой библиотеки API в начале страницы, блокируя её отображение.
  • 9. Загрузка с CDN Одноточечная дистрибуция (слева) и дистрибуция средствами CDN (справа)
  • 10. Свое решение • Что если попробовать загружать скрипты в тот момент, пока страница грузится, но не выполнять их, и вообще скрывать от браузера, что это скрипты до того момента, пока они не догрузились, чтобы не блокировать первичное отображение страницы?
  • 11. Заключение — встроить в head страницы script, указывающий на загрузчик; — встроить inline скрипт, использующий загрузчик для подгрузки других скриптов и стилей; — объединять скрипты и стили, использующиеся только совместно, в один для минимизации количества HTTP запросов; — минимизировать скрипты и стили; — убедиться в том, что сервер пакует передаваемые данные gzip'ом; — убедиться в том, что сервер правильно кеширует; — осторожно и вдумчиво использовать сторонние CDN и дополнительные хосты.