...

Hvorfor DNS-prefetching og preconnect kan spare enormt meget indlæsningstid

DNS-forhåndshentning og Preconnect forkorter tiden til det første svar, fordi browseren forbereder DNS, TCP og TLS på forhånd i stedet for først at starte ved den egentlige hentning. Dermed sparer jeg flere Rundrejser , hvilket især ved mobile forbindelser hurtigt kan betyde nogle hundrede millisekunder til en sekund.

Centrale punkter

  • Tidlig opløsning: Prioriter DNS-opslag, reducer ventetiden
  • Færdige forbindelser: Tilvejebringe TCP/TLS via Preconnect
  • Kritiske ressourcer: Fonts, scripts, API'er fremskynder
  • Målbart bedre: Optimering af FCP/LCP og TTFB
  • Slank udvalg: Kun vigtige domæner behandles med forrang

Hvordan DNS-forhåndshentning og forhåndsforbindelse sparer tid

Før browseren indlæser en fil, skal den have en IP via en DNS-opslag, efterfulgt af TCP- og TLS-håndtryk. Hvert trin genererer frem- og returveje i netværket, som ved højere Forsinkelse føles mærkbart. DNS Prefetching tager vinden ud af sejlene i det første trin, fordi navneopløsningen allerede kører, før ressourcen dukker op i parseren. Preconnect går videre og opbygger aktivt forbindelsen, inklusive kryptering. På den måde sikrer jeg, at hentningen af den egentlige fil kan starte direkte uden yderligere forsinkelse.

Disse forberedende anvisninger til browseren hedder Ressourcehenvisninger og de sigter mod det, der bremser på ægte enheder: netværksstartomkostninger. Jeg minimerer tiden til den første byte af eksterne ressourcer, hvilket har en positiv indvirkning på FCP og LCP. Især på sider med tredjepartsudbydere er skrifttyper, tag-managers og CDN'er tidligt tilgængelige. Det gør den første synlige opbygning mere smidig og interaktionen mærkbart hurtigere. Således virker siden responsiv i stedet for at vente på „skjulte“ forbindelsesopbygninger.

Grænser, bivirkninger og fornuftige begrænsninger

Hints er meget nyttige, men de er ikke en fri billet til at forvarme overalt. Hver tidlig opløsning eller forbindelse koster kortvarigt Ressourcer: åbne sockets, CPU til TLS, radioændring på mobilmodem og potentielt større energiforbrug. På HTTP/2/3 er parallelle streams effektive, men antallet af samtidige forbindelser pr. oprindelse forbliver begrænset. Jeg tager derfor følgende i betragtning:

  • Forbindelsesslots: For mange forhåndsforbindelser kan blokere andre vigtige overførsler.
  • batteri: Mobile enheder har gavn af færre, men målrettede opvarmninger.
  • cache-hit: Et DNS-hit i OS-cachen neutraliserer fordelen ved ekstra prefetch.
  • Timeouts: Forhåndsforbindelser kan lukkes igen af browseren, hvis de forbliver ubrugte.
  • Overensstemmelse: Hos tredjepartsudbydere udløser Preconnect allerede en forbindelse – dette kan være uønsket før samtykke (Consent).

Jeg behandler derfor Analyse/annoncer konservativ: DNS Prefetch maksimalt, Preconnect først efter samtykke. For Skrifttyper/CDN eller kritiske API'er Jeg sætter Preconnect bevidst tidligt, fordi dens nytte er sikker.

Praksis: Hvornår er hvilken hint fornuftig?

Jeg sætter DNS-forhåndshentning ved gentagne domæner, hvorfra flere filer kommer, f.eks. skrifttyper, analytics eller et CDN. På den måde sparer jeg gentagne DNS-opløsninger, før kritiske elementer vises. For domæner, hvor den synlige del er meget afhængig, vælger jeg Forbindelse. Dette gælder ofte skriftlige kilder, et hoved-CDN eller centrale API-endepunkter. For mindre vigtige udbydere er det ofte tilstrækkeligt med en tidlig navneopløsning.

Her er mindre mere, for for mange forhåndsforbindelser kan kortvarigt belaste netværket og optage slots, der ellers ville mangle andre steder. Derfor definerer jeg en kort liste over de første kandidater og udvider den først efter målinger. Ved distribution af indhold kombinerer jeg gerne henvisningerne med en CDN-opvarmning og præhentning, så kantknudepunkter svarer hurtigt. Samspillet reducerer ventetiden yderligere på geografisk niveau. Dette resulterer i mærkbart hurtigere første opkald og flydende efterfølgende sider.

HTML-implementering: Snippets og faldgruber

Implementeringen i Hoved er kort og effektiv. Til et ofte brugt skriftdomæne bruger jeg: <link rel="dns-prefetch" href="//fonts.googleapis.com">. Til dette bruger jeg Preconnect med protokol og CORS: <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>. Attributten crossorigin hjælper, når ressourcer senere indlæses med CORS-regler. Jeg placerer disse tags helt øverst, så browseren behandler dem med det samme.

Til rent DNS-baserede forløb bruger jeg den protokol-agnostiske skrivemåde //example.com, Ved Preconnect vælger jeg https://. Jeg tjekker i DevTools, om browseren rent faktisk opretter forbindelsen tidligt. Nogle browsere spekulerer allerede, men en eksplicit hint prioriterer mine vigtigste slutpunkter. Jeg sørger for ikke at forvarme alle tredjepartsdomæner. På den måde holder jeg netværksbelastning Lille, men vinder alligevel de afgørende millisekunder.

Serverside levering: Link-header og 103 Early Hints

Jeg behøver ikke kun at indsætte hints i HTML. Om HTTP-link-header kan serveren sende de samme signaler til browseren – endnu før HTML-koden ankommer. Med 103 Tidlige hints stiger chancen for, at DNS/forbindelser starter parallelt, mens serveren renderer det egentlige svar.

HTTP/1.1 103 Early Hints Link: ; rel=preconnect; crossorigin Link: ; rel=preconnect; crossorigin Link: ; rel=dns-prefetch HTTP/1.1 200 OK
...

Vigtigt: I overskriften bruger jeg altid absolut URL'er med protokol. Jeg holder listen kort, identisk med min HTML-variant, så begge måder forbliver konsistente.

Browserunderstøttelse og særlige funktioner

De store browsere understøtter DNS Prefetch og Preconnect, men der er nogle nuancer:

  • Safari opretter ofte Preconnect-forbindelser på en konservativ måde. Det er alligevel en god idé, hvis domænet skal bruges meget tidligt.
  • Firefox respekterer hints, men prioriterer egne heuristikker. For mange hints kan derfor give mindre effekt end forventet.
  • Chrome er mere aggressiv i sine spekulationer, men eksplicitte hints fremhæver vigtige årsager i prioriteringen.
  • HTTP/2/3 sammenlægning: Under de samme certifikater kan en forbindelse betjene flere underdomæner. En eneste Målrettet preconnect kan derfor være tilstrækkeligt.

Et detaljeret punkt: crossorigin er til Forbinder relevant for dns-prefetch virkningsløs. Jeg bruger den alligevel konsekvent ved Preconnect, især hvis der senere indlæses skrifttyper eller API'er med CORS.

Yderligere prioriteter: Preload, Fetchpriority og rækkefølge

Hints må supplere hinanden: Preconnect åbner døren, Forspænding henter aktivt en nødvendig fil. Med hentningsprioritet kan jeg desuden signalere til browseren, hvad der virkelig skal komme først.

<link rel="preconnect" href="https://cdn.example.com" crossorigin>
<link rel="preload" as="image" href="/hero.jpg" fetchpriority="high">
<img src="/hero.jpg" alt="Helt" fetchpriority="high">

Jeg bruger kun preload, hvis filen definitiv ellers risikerer jeg tilstoppede ledninger. Rækkefølgen i head er stadig vigtig: Hints helt øverst, derefter kritiske preloads, derefter styles og scripts.

WordPress uden plugin: ren integration

WordPress Jeg gemmer domænerne centralt og indtaster tags i wp_head fra. En lille funktion med array er nok: Den gentager mine måldomæner og skriver hver en prefetch- og preconnect-tag. Jeg tilføjer funktionen med meget lav prioritet til hooket, så den havner i starten af head-området. På den måde får alle skabeloner glæde af det, og jeg behøver kun at vedligeholde listen ét sted. Det undgår dobbelte poster og holder Tema-kode slank.

Eksempel på tilgang: $origins = ['//fonts.googleapis.com','//cdn.example.com']; Derefter: echo ''; og valgfrit echo '';. Jeg kontrollerer i kildekoden, om udgifterne virkelig er helt øverst. Derefter måler jeg, om DNS-, TCP- og TLS-faserne starter tidligere. På den måde sikrer jeg fordelene for ægte Brugere og fjern senere ubrugte domæner.

WordPress i dybden: wp_resource_hints og samtykkekontrol

WordPress tilbyder med wp_resource_hints en integreret grænseflade. Jeg indlæser Preconnect/DNS-Prefetch der og aflaster skabelonkoden. Derudover kan jeg tilføje hints til tredjepartsudbydere Samtykke koble sammen.

add_filter('wp_resource_hints', function($hints, $rel){
  $critical = ['https://fonts.googleapis.com', 'https://cdn.example.com'];
  if ($rel === 'preconnect') { $hints = array_merge($hints, $critical); }
  if ($rel === 'dns-prefetch') {
    $hints = array_merge($hints, ['//fonts.googleapis.com', '//cdn.example.com']);
  }
  return array_values(array_unique($hints));
}, 1, 2);

For tjenester med samtykke indsætter jeg en lille forespørgsel (cookie, serverflag) og udsteder først Preconnect efter samtykke. På den måde undgår jeg for tidlige forbindelser til tredjepartssystemer.

Måling i stedet for gætteri: min test-workflow

Jeg starter med en basis-run i Fyrtårn, DevTools og syntetiske tests. Derefter tilføjer jeg hints og sammenligner målingerne under identiske netværksprofiler. Jeg er især interesseret i TTFB fra eksterne kilder, FCP og LCP i Above-the-Fold. I vandfaldsvisningen kan jeg se, om DNS, TCP og TLS starter tidligere. Det er netop her, effekten skal være synlig, ellers fjerner jeg hintet igen.

Jeg tester på flere netværksforhold og enheder, fordi Mobilkommunikation er mere påvirket af roundtrips. I WebPageTest eller lignende værktøjer kontrollerer jeg First Byte, Start Render og Visually Complete. Jeg holder listen over domæner kort og tilpasser den i sprints. Jeg dokumenterer hver ændring med før-og-efter-diagrammer, så effekten forbliver tydelig. På den måde forbliver optimeringen effektiv uden at belaste browseren unødigt.

DevTools-validering: Sådan genkender jeg vellykkede hints

I netværksvisningen holder jeg øje med typiske mønstre:

  • Tidlige DNS/TCP/TLS-faser uden efterfølgende anmodning: Det er et hit for Preconnect.
  • Genbrug af forbindelser: Senere anmodninger springer direkte til download. Waterfall-bjælkerne mangler for DNS/TCP/TLS.
  • Initiativtager „Andet“: Nogle værktøjer markerer hints på denne måde. Jeg sammenligner starttider med og uden hints.

Jeg kontrollerer desuden, om antallet af samtidige forbindelser holder sig inden for rammerne. Hvis hints udløber ubrugte, var de for tidlige eller overflødige – så reducerer jeg dem.

Samspil med preload, prefetch (navigation) og HTTP/3

DNS Prefetching og Preconnect tilhører familien af Ressourcehenvisninger, sammen med Preload og Prefetch til kommende navigationer. Jeg bruger Preload, når en fil helt sikkert skal bruges og skal være tilgængelig meget tidligt, f.eks. en kritisk CSS-fil eller en font. Navigation-Prefetch hjælper med forventede efterfølgende sider, når jeg kan vurdere sandsynligheden. HTTP/3 forkorter desuden Forsinkelse, fordi oprettelse af forbindelse og tab af pakker behandles forskelligt. Jeg læser baggrundsinformation om dette i en artikel om HTTP/3 og forhåndsindlæsning.

Følgende tabel giver et hurtigt overblik over teknikkerne. Jeg skelner klart mellem „formodentlig nødvendigt“ og „sikkert nødvendigt“, så browseren kan prioritere på en fornuftig måde. En god blanding forhindrer overbelastning og øger træfsikkerheden for de tidlige hints. På den måde indlæser jeg vigtige elementer tidligt uden at overbelaste netværket. Det øger Effektivitet hele kæden.

Tip Formål Typisk brug HTML-eksempel
DNS-forhåndshentning Tidlig Opløsning af navn Flere filer fra samme tredjepartsdomæne <link rel="dns-prefetch" href="//cdn.example.com">
Forbindelse Tidligere TCP/TLS-Opbygning Kritiske skrifttyper, centralt CDN, API'er til Above-the-Fold <link rel="preconnect" href="https://cdn.example.com" crossorigin>
Forspænding Tidligere Filhentning Sikkert nødvendige CSS/skrifttyper/billeder med høj prioritet <link rel="preload" as="style" href="/critical.css">

Særlige tilfælde: Skrifttyper, sammenlægning og certifikater

Med Skrifttyper er gevinsten ofte særlig stor. Jeg opretter en forhåndsforbindelse til stylesheet-domænet (f.eks. API'en til CSS-deklarationerne) og, hvis det er kendt, til det domæne, der leverer binærfilerne. Derudover indstiller jeg en fornuftig skrifttype-visning, for at reducere layoutskift. For billed-CDN'er med mange above-the-fold-aktiver er det en fordel at bruge en enkelt preconnect, da HTTP/2/3 transporterer flere filer effektivt via den samme forbindelse.

Med Sammenlægning af forbindelser kan browsere bruge en H2/H3-forbindelse til flere værter, hvis certifikater og ALPN passer. I så fald er det ofte tilstrækkeligt med en forhåndsforbindelse til den centrale kilde. Jeg måler, om dette fremskynder anmodninger til naboværter uden ekstra håndtryk.

Indflydelse på SEO og brugeroplevelse

Core Web Vitals som LCP og INP reagerer stærkt på netværksstart og blokeringer. Hvis jeg indstiller DNS Prefetching og Preconnect korrekt, vises skrifttyper og vigtige scripts tidligere. Det forbedrer den synlige opbygning og mindsker risikoen for, at teksten senere springer. Brugerne kommer hurtigere i gang med interaktionen og venter mindre. Disse effekter mindsker afvisninger og sender positive Signaler til søgemaskiner.

Jeg holder også øje med den opfattede hastighed, ikke kun måleværdier. En hurtig første rendering præger forventningen til resten af sessionen. Hvis man kommer hurtigt i gang, er man mere tilbøjelig til at blive på siden. Det bidrager til konvertering og tillid. Således bidrager de små kodehenvisninger mærkbart til SEO og salg.

Hosting: Infrastruktur som forstærker

Gode ressourcehenvisninger udfolder deres fulde potentiale på en hurtig Platform. Langsomme servere modvirker fordelene, mens hurtig „preconnect hosting“ med HTTP/2 eller HTTP/3 mangedobler gevinsterne. Jeg lægger vægt på korte svartider, ren TLS og fornuftig caching på serversiden. I sammenligninger overbeviser et hostingmiljø, der prioriterer ydeevne. Her betaler hver eneste besparelse sig. Millisekund dobbelte.

Ud over regnekraft er DNS-konfigurationen også vigtig. En kort TTL fremskynder ændringer og letter ren levering via CDN'er. Jeg læser detaljer om en optimal DNS-TTL og vurderer, hvor ofte indtastninger ændres. Sammen med Prefetch og Preconnect opnår jeg hurtige opløsninger og hurtige håndtryk. Således forbliver kæden fra navn til indhold stram. Det styrker Konsistens ladetider på tværs af lokationer.

Databeskyttelse og governance

Preconnect kan allerede personrelaterede data hvordan IP-adressen sendes til tredjepartsudbydere. I regulerede miljøer tillader jeg kun sådanne forbindelser efter samtykke. For rent funktionelle, nødvendige ressourcer (f.eks. egne CDN'er) er Preconnect mindre kritisk. Jeg dokumenterer, hvilke hints der sættes af hvilken grund, og knytter dem til min samtykkestyring. På den måde forbliver ydeevne og compliance i balance.

Praktiske eksempler og typiske domæner

Når det gælder skrifttyper, bruger jeg Preconnect til skrifttyper.googleapis.com og valgfrit for det statiske fontfil-domæne. Dette sikrer, at tekst gengives uden forsinkelse, og at layoutskift forekommer sjældnere. Til en butiks primære CDN bruger jeg Preconnect, så vigtige billeder i startsektionen starter tidligt. Til tracking eller chat-widgets er DNS Prefetch ofte tilstrækkeligt, da den synlige opbygning har prioritet. Sådan ordner jeg det Prioritet og synlighed praktisk.

På API-drevne sider vælger jeg Preconnect til slutpunkter, der leverer Above-the-Fold-data. For efterindlæste moduler er Prefetch tilstrækkeligt for et separat domæne. Jeg kontrollerer, om tredjepartsudbydere tilbyder HTTP/2/3, så flere filer kan flyde via en forbindelse. Det øger effekten af hver Preconnect-hint. Jeg fjerner tjenester på forsøgsbasis for at Baseline-Forskellen måles.

Typiske fejl og hvordan jeg undgår dem

  • Hints om ubrugte domæner: Jeg lader dem løbe ud ved hjælp af måling og fjerner dem.
  • Forkert protokol: For Preconnect altid https:// ellers forsvinder effekten.
  • Dobbeltregistreringer: Central administration, deduplikering.
  • For mange forudgående forbindelser: Hellere tre gode kandidater end ti middelmådige.
  • Glem crossorigin: Indstil Preconnect til CORS-ressourcer for at undgå senere forhindringer.
  • Preload i stedet for preconnect nødvendigt: Hvis en fil skal bruges sikkert, skal den forhåndsindlæses direkte.

Tjekliste til implementering og vedligeholdelse

Jeg starter med en revision af alle eksterne Kilder: Skrifttyper, CDN'er, scripts, API'er. Derefter markerer jeg kritiske domæner til Preconnect og tildeler resten Prefetch. Jeg placerer tags øverst i head, offentliggør og måler mindst tre kørsler pr. netværksprofil. Jeg holder listen kort og rydder op i den med jævne mellemrum. På den måde forbliver Effekt bevaret og siden slank.

Dernæst kontrollerer jeg, om andre teknikker giver mening: Preload for en kritisk CSS-fil eller en hovedfont. Jeg ser på HTTP/3 og kontrollerer, om server- og CDN-kæden svarer korrekt. Ved indholdstoppe planlægger jeg en kort CDN-opvarmning. Jeg dokumenterer alle ændringer i en changelog-lignende note. Denne løbende vedligeholdelse bevarer Gennemsigtighed performance-arbejdet.

Kort resumé

Med DNS-forhåndshentning Jeg opløser domæner tidligt og forbereder komplette forbindelser inklusive TLS med Preconnect. Begge dele sparer roundtrips og reducerer tiden, indtil indholdet bliver synligt. Jeg vælger få, men centrale domæner, måler effekten og holder listen ren. I kombination med Preload, HTTP/3 og god hosting øges fordelen markant. Den, der forudser struktureret, opnår mærkbare fordele. Millisekunder og forbedrer UX og SEO.

Aktuelle artikler