В современных веб-приложениях время загрузки страницы и отзывчивость
интерфейса напрямую зависят от того, как браузер управляет загрузкой
ресурсов. preload и
prefetch — два механизма, которые
позволяют влиять на порядок и стратегию загрузки файлов, улучшая
производительность и пользовательский опыт.
<link rel="preload"> сообщает
браузеру, что определённый ресурс будет необходим в ближайшее время, и
его следует загрузить как можно скорее, даже если обычный HTML или CSS
ещё не требуют его напрямую.
Загружается с высокой приоритетностью.
Используется для ресурсов, которые критически важны для текущей страницы (например, шрифты, скрипты или стили).
Позволяет избежать задержек при рендеринге, связанных с блокирующими ресурсами.
Атрибут as указывает тип ресурса, например:
<link rel="preload" href="/styles/main.css" as="style">
<link rel="preload" href="/scripts/app.js" as="script">
<link rel="preload" href="/fonts/Roboto.woff2" as="font" type="font/woff2" crossorigin="anonymous">as, чтобы браузер мог
применить правильные политики кеширования и приоритизации.crossorigin, если шрифт
загружается с внешнего источника, чтобы избежать ошибок при CORS.<link rel="prefetch">
используется для ресурсов, которые могут понадобиться в будущем, но
не критичны для текущей загрузки страницы.
Пример использования:
<link rel="prefetch" href="/scripts/future-feature.js">
<link rel="prefetch" href="/images/next-page-banner.jpg">
| Характеристика | Preload | Prefetch |
|---|---|---|
| Приоритет загрузки | Высокий | Низкий |
| Цель | Ресурсы для текущей страницы | Ресурсы для будущего использования |
| Влияние на рендер | Может ускорить критический рендеринг | Не влияет на текущий рендер |
| Типичные ресурсы | Шрифты, CSS, скрипты для первой отрисовки | Скрипты, изображения для следующей страницы |
Lighthouse оценивает производительность страницы и обращает внимание на правильное использование preload и prefetch:
Lighthouse может выдавать рекомендации по:
В современных сборщиках и фреймворках (Webpack, Vite, Next.js) можно автоматически генерировать теги preload/prefetch:
PreloadWebpackPlugin для
добавления preload тегов к критическим бандлам.<link rel="preload">
для критических скриптов и шрифтов автоматически.Эта стратегия помогает создавать страницы с быстрым временем рендеринга и плавной подгрузкой контента, что критично для современных веб-приложений и оценки в Lighthouse.