Оптимизация загрузки ассетовКогда дело доходит до ускорения загрузки страниц, фронтендеры любят выжимать максимум из доступных технологий. Некоторые из них уже на слуху, другие только набирают популярность. Сегодня разберем проверенные методы и новые подходы.
1.
<link rel="preload">
: проще некуда
Preload позволяет подгружать критически важные ресурсы заранее. Это гибкий и простой в реализации способ ускорения загрузки, который отлично подходит для изображений, шрифтов и скриптов.
👉 Пример:
Подгружаем шрифт, необходимый для отображения интерфейса:
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin="anonymous">
Скрипты:
<link rel="preload" href="/js/critical.js" as="script">
Изображения:
<link rel="preload" href="/images/banner.jpg" as="image">
Почему лучше, чем HTTP/2 Push?
Хотя серверный пуш позволяет загружать ресурсы заранее, настройка сложна и требует поддержки на уровне бэкенда. Preload, напротив, легко внедрить прямо в HTML и управлять его использованием.
2.
<link rel="prefetch">
: готовим ресурсы для будущего
Если известно, куда пользователь может пойти дальше, то prefetch поможет заранее подгрузить ресурсы, которые понадобятся. Это особенно полезно на страницах с предсказуемыми переходами.
👉 Пример:
На главной странице предзагружаем ассеты для “О нас”:
<link rel="prefetch" href="/about.html">
<link rel="prefetch" href="/css/about.css">
3. DNS Prefetch и Preconnect: ускоряем внешний контент
Когда ресурсы грузятся с внешних источников (шрифты, аналитика, изображения), можно сократить задержки с помощью dns-prefetch и preconnect:
• dns-prefetch выполняет поиск DNS ещё до первого запроса.
• preconnect заранее устанавливает соединение с сервером, включая DNS, TLS и TCP handshake.
👉 Пример:
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="preconnect" href="//fonts.googleapis.com" crossorigin>
Это особенно важно для сторонних библиотек, таких как Google Fonts или CDN-ресурсы.
4. Паттерн загрузки при hover на ссылке
Динамическая загрузка ресурсов при наведении курсора на ссылку улучшает UX и ускоряет переходы.
👉 Как сделать?
document.querySelectorAll('a').forEach(link => {
link.addEventListener('mouseenter', () => {
const prefetchLink = document.createElement('link');
prefetchLink.rel = 'prefetch';
prefetchLink.href = link.href;
document.head.appendChild(prefetchLink);
});
});
5. Speculation Rules: свежий взгляд на оптимизацию
Для меня это стало настоящим открытием. Новая технология от команды Chrome позволяет браузеру “угадывать”, какие ресурсы нужно подгрузить в первую очередь.
👉 Пример:
<script type="speculationrules">
{
"prefetch": [
{"source": "list", "urls": ["/about", "/contact"]}
]
}
</script>
Хотя это пока экспериментальная фича, её возможности впечатляют. Жду, когда поддержка появится и в других браузерах, чтобы использовать её шире.
Заключение
Эти техники хорошо работают вместе:
• Используйте preload для критических ресурсов страницы (просто и эффективно).
• Подгружайте будущие страницы через prefetch и паттерны на основе hover.
• Добавьте dns-prefetch и preconnect для внешних ресурсов.
• Экспериментируйте с Speculation Rules, чтобы быть на шаг впереди.