Ordne die Ausführung deiner Skripte mit defer und async, steuere dann das Netzwerk mit preload, preconnect und prefetch.
Diese Lektion in Kodokon öffnenEin klassisches <script src> blockiert das Parsen des HTML: Der Browser stoppt, lädt herunter, führt aus und macht dann weiter. Zwei Attribute ändern das Spiel. defer lädt parallel zum Parsen herunter und führt die Skripte in Dokumentreihenfolge aus, kurz vor DOMContentLoaded: Es ist die Standardwahl für deinen Anwendungscode, der vom DOM und von anderen Skripten abhängen kann. async lädt ebenfalls parallel herunter, führt aber aus, sobald die Datei ankommt, ohne garantierte Reihenfolge: Reserviere es für eigenständige Skripte wie Analytics, die von nichts abhängen.
<script src="/js/analytics.js" async></script>
<script src="/js/vendor.js" defer></script>
<script src="/js/app.js" defer></script>Manche kritischen Ressourcen entdeckt der Browser erst sehr spät: eine Schriftart, die in einer CSS-Datei referenziert wird, ein Bild, das in JavaScript geladen wird. <link rel="preload"> behebt diese späte Entdeckung, indem es die Ressource direkt im <head> deklariert, mit dem verpflichtenden Attribut as, damit der Browser die richtige Priorität und den richtigen Cache anwendet. Musterfall: Webfonts, die sonst erst angefordert werden, nachdem das CSS heruntergeladen und geparst wurde.
<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">Letzte Familie: die Netzwerk-Hinweise mit niedriger Priorität. <link rel="preconnect"> stellt die vollständige Verbindung im Voraus her (DNS, TCP, TLS) zu einem Drittanbieter-Origin, den du mit Sicherheit nutzen wirst: bis zu 300 ms gespart bei der ersten Anfrage. dns-prefetch ist sein leichtgewichtiger Cousin (nur DNS-Auflösung), nützlich als Rückfallebene für weniger sichere Origins. Und prefetch lädt in der Leerlaufzeit eine Ressource herunter, die für die nächste Navigation gedacht ist: zum Beispiel die Checkout-Seite vom Warenkorb aus. Der Kompromiss ist klar: preload bedient die aktuelle Seite, prefetch setzt auf die nächste.
<link rel="preconnect"
href="https://api.example.com">
<link rel="dns-prefetch"
href="https://cdn.example.com">
<link rel="prefetch" href="/checkout.html">