Завантаження javascript (без блокування відтворення документа, асинхронна завантаження)

Рішення для серверної частини:
- Зменшити розмір файлів, що передаються
- використовувати CDN
- Винести статичні файли на окремий домен або під домен, таким чином збільшити кількість одночасних з'єднань браузера.
- Включити стиснення переданих файлів (gzip)

Рішення для клієнтської частини:
- Зменшити кількість запитів.
- Кешувати файли на стороні клієнта за допомогою заголовків Expires і Etags.
- Використовувати загальнодоступні CDN (Google CDN, Yandex CDN). Таким чином, існує ймовірність, що файл з загальнодоступного CDN вже буде зберігатися в кеші браузера.
- Асинхронна завантаження підключаються файлів.

Одним із способів оптимізації швидкості завантаження сайту є асинхронна завантаження файлів, яка не блокує отрисовку.

Але це одиничний випадок, коли потрібне завантаження одного файлу. Часто на практиці підключається безліч файлів.

Скрипт, який підключений з атрибутом defer виконається не порушуючи порядок виконання по відношенню до решти скриптам і його виконання відбудеться після повного завантаження і парсинга сторінки, але перед тим, як зголоситься DOMContentLoaded.

Скрипт, який підключений з атрибутом async виконається при першій нагоді після повного завантаження, але при цьому не очікує закінчення парсинга документа і до завантаження об'єкта window. Браузери не гарантують виконання скриптів в тому ж порядку в якому вони підключені.

extsrc.js - бібліотека, яка запускає скрипти на виконання після того, як сторінка завантажиться і відобразиться користувачеві. Працює коректно з document.write.