← Назад к вопросам

Как подсказать браузеру что какие-либо ресурсы будут загружены?

2.0 Middle🔥 144 комментариев
#Браузер и сетевые технологии

Комментарии (4)

🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Способы подсказания браузеру о загружаемых ресурсах

Для оптимизации загрузки веб-сайта браузеру можно подсказать о ресурсах заранее с помощью специальных тегов и атрибутов в HTML. Это позволяет браузеру распланировать загрузку и приоритизировать важные ресурсы.

Основные методы подсказки

1. Link rel="preload"

Этот метод сообщает браузеру, что ресурс потребуется в текущей навигации и его следует загружать как можно раньше с высоким приоритетом.

<!-- Preload шрифтов -->
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>

<!-- Preload изображений, которые выше сгиба -->
<link rel="preload" href="/hero-image.jpg" as="image" media="(max-width: 600px)">

<!-- Preload стилей -->
<link rel="preload" href="/styles.css" as="style">

<!-- Preload скриптов -->
<link rel="preload" href="/critical.js" as="script">

2. Link rel="prefetch"

Предварительная загрузка ресурсов низкого приоритета, которые могут понадобиться при переходе на другую страницу. Загружаются в фоновом режиме.

<!-- Prefetch CSS для следующей страницы -->
<link rel="prefetch" href="/about-page.css" as="style">

<!-- Prefetch скриптов для других маршрутов -->
<link rel="prefetch" href="/blog-page.js" as="script">

<!-- Prefetch изображений для галереи -->
<link rel="prefetch" href="/gallery-images/2.jpg" as="image">

3. Link rel="dns-prefetch" и rel="preconnect"

Эти методы помогают подготовить соединение с внешними доменами заранее.

<!-- DNS-prefetch: только DNS резолюция -->
<link rel="dns-prefetch" href="//api.example.com">
<link rel="dns-prefetch" href="//cdn.example.com">

<!-- Preconnect: DNS + TCP + TLS (для критичных ресурсов) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

4. Link rel="modulepreload"

Для модулей JavaScript (ES6 modules).

<link rel="modulepreload" href="/modules/utils.mjs">
<link rel="modulepreload" href="/modules/components.mjs">

Использование в Next.js

export const metadata = {
  title: 'My App',
};

export default function RootLayout({ children }) {
  return (
    <html>
      <head>
        <link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossOrigin="anonymous" />
        <link rel="preconnect" href="https://api.example.com" />
        <link rel="prefetch" href="/api/data.json" />
      </head>
      <body>{children}</body>
    </html>
  );
}

Практические рекомендации

Используй preload для критичных ресурсов текущей страницы: шрифты, изображения выше сгиба, критичный CSS/JS.

Используй prefetch для ресурсов следующих страниц: JS модули, стили, изображения нижних частей страницы.

Используй preconnect для внешних доменов: CDN, аналитика, API сервисы.

Примеры оптимизации

<!-- Шрифты Google -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preload" href="/fonts/inter-var.woff2" as="font" type="font/woff2" crossorigin>

<!-- CDN ресурсы -->
<link rel="preconnect" href="https://cdn.jsdelivr.net">

<!-- Маршруты SPA приложения -->
<link rel="prefetch" href="/blog.js">
<link rel="prefetch" href="/about.js">

Правильное использование этих тегов значительно улучшает Core Web Vitals и общее время загрузки страницы, что положительно влияет на SEO и пользовательский опыт.

Как подсказать браузеру что какие-либо ресурсы будут загружены? | PrepBro