Выбор ответа Junior Производительность и Web Vitals спрашивают часто обновлено
async и defer у скриптов
Вопрос
Есть два скрипта: a.js зависит от lib.js. Как подключить их, чтобы не блокировать разбор HTML и сохранить порядок выполнения?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Обоим поставить defer в нужном порядке. defer-скрипты качаются параллельно и выполняются после разбора HTML строго в порядке подключения. async выполняется сразу по загрузке, порядок не гарантирован, поэтому a.js может запуститься раньше lib.js.
Варианты ответа
- Обоим поставить
async - Не ставить атрибутов и перенести в
<head> - Обоим поставить
deferв нужном порядкеправильный ответ lib.jsсasync,a.jsсdefer
Разбор
defer-скрипты качаются параллельно и выполняются после разбора HTML строго в порядке подключения. async выполняется сразу по загрузке, порядок не гарантирован, поэтому a.js может запуститься раньше lib.js. Скрипты без атрибутов в <head> блокируют разбор. Смешивание async и defer тоже не гарантирует, что lib.js успеет первым.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Производительность и Web Vitals»
- CLS
- INP
- LCP
- Длинная задача
- Главная причина CLS у картинок
- Lighthouse и полевые данные
- Что не так с главной картинкой
- Почему клик откликается с задержкой