Unter DNS-Prefetching versteht man das Auflösen einer Domain in seine IP-Adresse im voraus.
Jede externe Domain, die in eine Webseite eingebunden ist, verursacht einen Aufruf der externen Domain und auch ein auflösen der Domain in Ihre IP-Adresse, das benötigt eine gewisse Zeit und verlangsamt das Laden der Webseite.
Das DNS-Prefetchinging versucht – schon bevor der Inhalt der externen Domain aufgerufen wird – die IP-Adresse aufzulösen, sodass nicht erst auf die Auflösung gewartet werden muss.
Die meisten aktuellen Browser machen das mit eingebundenem HTML-Inhalt automatisch, allerdings nicht mit Javascript-Dateien – oder ähnlichen – die im Header stehen.
Deswegen kann man explizit im <head>
Bereich einer Webseite das DNS-Prefetching für einzelne Domains aktivieren:
Häufig verwendete DNS-Prefetch Links
<!-- Amazon S3 -->
<link rel="dns-prefetch" href="//s3.amazonaws.com">
<!-- Google APIs -->
<link rel="dns-prefetch" href="//ajax.googleapis.com">
<!-- Google Analytics -->
<link rel="dns-prefetch" href="//www.google-analytics.com">
<!-- Typekit -->
<link rel="dns-prefetch" href="//use.typekit.com"><link rel="dns-prefetch" href="//p.typekit.net">
DNS-Prefetching abschalten
Man kann auch explizit im <head>
sagen, das man kein DNS-Prefetching möchte:
<meta http-equiv="x-dns-prefetch-control" content="off">
Warnung: Diese Angabe wird die Webseite, wenn externe Inhalte eingebunden sind, verlangsamen. Außer man hat zusätzliche DNS-Prefetch Angaben gemacht, diese werden dennoch ausgeführt.
DNS-Prefetching wird von folgenden Browsern unterstützt:
- Firefox 3.5+
- Chrome
- Safari 5+
- Opera (unbekannt)
- IE 9 (wird auf blogs.msdn.com »Pre-resolution« genannt)
- Update: Wird von allen aktuellen browsern unterstützt.
Quelle & weitere Informationen
Ist DNS-Prefetching sinnvoll?
Wenn man (viele) externe Inhalte hat die nicht gleich an erster Stelle im Quelltext stehen, macht DNS-Prefetching Sinn und kann ein paar Millisekunden an Ladezeit rausholen.
Wenn man keine externen Inhalte hat, braucht man es nicht oder kann es gar abschalten (s.o.).
WordPress Plugins & Snippet für DNS-Prefetching
Ein eigens Plugin ist dafür nicht nötig.
Man kann das z.B. mit diesem Snippet im Child-Theme
in der functions.php
einbinden:
// Set custom "dns-prefetch" and "preconnect" headers at top of <head>
function ms_dns_prefetch()
{
// List of domains to set prefetching for
$prefetchDomains = [
'//beispiel.de',
'//example.com',
];
$prefetchDomains = array_unique($prefetchDomains);
$result = '';
foreach ($prefetchDomains as $domain) {
$domain = esc_url($domain);
$result .= '<link rel="dns-prefetch" href="' . $domain . '" crossorigin />';
$result .= '<link rel="preconnect" href="' . $domain . '" crossorigin />';
}
echo $result;
}
add_action('wp_head', 'ms_dns_prefetch', 0);
Quelle: ansas-meyer.de
Wenn man sein WordPress Theme im Template nicht anpassen kann oder will gibt es Plugins, die dir die DNS-Prefetching Codes in den Headbereich einfügen.
Plugins wie SWIFT Performance (Light / Pro) oder WP Rocket fügen, wenn externe Quellen gefunden werden, die DNS Prefetch Angaben automatisch hinzu (WP Rocket hat ein Feld wo man die Domains selber einfügen kann).
Beispiel Output des SWIFT Performance Plugins im Frontend:
Hat dir dieser Artikel weitergeholfen?
Was sind deine Erfahrungen mit DNS-Prefetching und Geschwindigkeitsoptimierungen? Hast du weitere Tipps zur Geschwindigkeitsoptimierung? Lass es mich in den Kommentaren wissen.
9 Kommentare zu „Wie man mit DNS-Prefetching externe Inhalte schneller lädt“
Hi
Vielen Dank für diesen Beitrag, der mir in meiner Suche über dieses Thema weitergeholfen hat.
Beste Grüsse
Silvester
Freut mich. Dankeschön.
Danke für den Text!
gerne!
Pingback: WordPress entschlacken und beschleunigen - Website Geschwindigkeit | Tobias Scheible
Danke für den Verweis!
Danke, hat weiter geholfen!
Millisekunden… Ich halte sowas für totalen Blödsinn. Es bläht den Code nur unnötig auf, und das übertragen dauert vermutlich länger, als wenn der Browser die Domains auflöst, nachdem er die Seite geparset hat. Dinge, die die Welt nicht brauch.
Das Auflösen, von Domains kann schon dauern…
Aufblähen, bei einer kurzen Zeile pro Domain, ist da auf jeden Fall eher zu vernachlässigen, da finde ich, gibt es Schlimmeres, was den Code (DOM) aufbläht. Hierbei ist das DOM-Konstrukt ja nicht aufgebläht, da es im
steht.Empfohlene Vorgehensweise ist es nach wie vor.
Bedenklich ist eher: Wenn man per Cookie-Blocker das externe Laden von Domains blockiert (was man laut DSGVO /GDRP machen muss), dann könnte DNS-Prefetching sogar zum Problem werden, da die Domain vor Zustimmung aufgelöst / angefragt wird (und ich denke auch die IP schon übertragen wird – wie soll es anders gehen).