Middle
53
questionbank

Как мы можем помочь браузеру подготовиться к загрузке ресурсов?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Использовать директивы предзагрузки: preconnect, dns-prefetch, preload, prefetch, prerender.

ДирективаОписаниеПример
preconnectУстанавливает соединение (DNS lookup, TCP handshake, TLS negotiation) с другим источником данных заранее.<link rel="preconnect" href="https://cdn.example.com">
dns-prefetchВыполняет разрешение доменного имени заранее.<link rel="dns-prefetch" href="//api.example.com">
preloadЗапрашивает ресурс (JS, CSS, шрифты) заранее с высоким приоритетом, не блокируя рендеринг.<link rel="preload" href="/styles.css" as="style">
prefetchЗапрашивает ресурс, который скорее всего понадобится в будущем (например, на следующей странице).<link rel="prefetch" href="/next_page.html">
prerenderРендерит следующую страницу в скрытой вкладке заранее.<link rel="prerender" href="/upcoming_page.html">

Использовать атрибут async или defer для тега <script> для асинхронной загрузки и выполнения скриптов, не блокируя парсинг HTML:

html

Использовать атрибут loading="lazy" для изображений и <iframe> для их отложенной загрузки, когда они попадают в область видимости:

html

Оптимизировать изображения (сжимать, использовать современные форматы вроде WebP), шрифты (подмножества, форматы WOFF/WOFF2) и другие ресурсы.

Минифицировать и сжимать CSS, JavaScript и HTML.

Использовать Service Worker для кеширования ресурсов и обеспечения офлайн-доступа.

Разбивать большой JavaScript-код на более мелкие части (code splitting) и загружать их по требованию.

Использовать HTTP/2 и HTTP/3 для более эффективного мультиплексирования и сжатия заголовков.

Устанавливать правильные заголовки кеширования (Cache-Control, Expires) на сервере.

Использовать <link rel="modulepreload"> для предзагрузки модулей JavaScript ES.

html