CSS почти всегда рендер-блокирующий → кладём в <head>, оптимизируем через critical CSS + preload/media. Скрипты по умолчанию парсер-блокируют → используем defer, а для модулей — type="module" (они «деферятся» сами). Для CDN — SRI + crossorigin. Шрифты — preload + font-display. Следим за порядком подключений, кэшем и CORS. Ниже — все тонкости с проверенными приёмами и ловушками Пример «чистого» подключения (html): Critical CSS inline, остальное — отложить: Альтернативные темы:
Можно подключать несколько таблиц и переключать их в рантайме: <link rel="preload" href="/fonts/Inter.var.woff2" as="font" type="font/woff2" crossorigin> CORS обязателен для кросс-доменных шрифтов (crossorigin="anonymous" на <link> и корректные заголовки на сервере). В @font-face укажите font-display: swap|optional — устранит FOIT. Если шрифт с CDN — добавьте preconnect: <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> Классические скрипты: ES-модули (type="module"): Preload модулей (ускорение