Ordena la ejecución de tus scripts con defer y async, y luego dirige la red con preload, preconnect y prefetch.
Abrir esta lección en KodokonUn <script src> clásico bloquea el análisis del HTML: el navegador se detiene, descarga, ejecuta y luego reanuda. Dos atributos cambian las reglas del juego. defer descarga en paralelo con el análisis y ejecuta los scripts en el orden del documento, justo antes de DOMContentLoaded: es la elección por defecto para tu código de aplicación, que puede depender del DOM y de otros scripts. async también descarga en paralelo, pero ejecuta en cuanto llega el archivo, sin orden garantizado: resérvalo para scripts autónomos como la analítica, que no dependen de nada.
<script src="/js/analytics.js" async></script>
<script src="/js/vendor.js" defer></script>
<script src="/js/app.js" defer></script>El navegador solo descubre algunos recursos críticos muy tarde: una fuente referenciada dentro de un archivo CSS, una imagen cargada en JavaScript. <link rel="preload"> corrige ese descubrimiento tardío al declarar el recurso directamente en el <head>, con el atributo as obligatorio para que el navegador aplique la prioridad y la caché correctas. Caso de manual: las webfonts, que de otro modo solo se solicitan después de haber descargado y analizado el CSS.
<link rel="preload" as="font" type="font/woff2"
href="/fonts/inter-var.woff2" crossorigin>
<link rel="preload" as="image"
href="/img/hero-1600.jpg" fetchpriority="high">Última familia: las pistas de red de baja prioridad. <link rel="preconnect"> establece la conexión completa por adelantado (DNS, TCP, TLS) hacia un origen de terceros que sin duda vas a usar: hasta 300 ms ahorrados en la primera petición. dns-prefetch es su primo ligero (solo resolución DNS), útil como respaldo para orígenes menos seguros. Y prefetch descarga, durante el tiempo de inactividad, un recurso destinado a la próxima navegación: la página de pago desde el carrito, por ejemplo. El compromiso está claro: preload sirve a la página actual, prefetch apuesta por la siguiente.
<link rel="preconnect"
href="https://api.example.com">
<link rel="dns-prefetch"
href="https://cdn.example.com">
<link rel="prefetch" href="/checkout.html">