Es gibt viele verschiedene Optimierungen, die man machen kann, wenn es um WordPress geht, und einige sind wichtiger als andere. Ein Faktor, der oft übersehen wird, sind die Suchzeiten, die mit DNS verbunden sind, und wie sehr es sich auf deine Webseite auswirkt. Genau wie bei TTFB und der Netzwerklatenz ist es ein wichtiges Teil des Puzzles, wenn es um die Berechnung deiner gesamten Seitenladezeiten geht. Deshalb tauchen wir heute in ein paar Empfehlungen ein, wie man DNS-Lookups reduzieren und beschleunigen kann, warum man das tun sollte und wie es sich auf die Performance deiner Webseite auswirkt.
Was ist DNS-Lookup?
Um dir zu zeigen, was ein DNS-Lookup ist, musst du zuerst verstehen, wie DNS funktioniert. DNS (Domain Name System) ist im Wesentlichen das Rückgrat des Internets. Um zu erklären, wie DNS funktioniert, kann man es sich wie ein Telefonbuch für das World Wide Web vorstellen. Jede Webseite und Domain, die du besuchst, wird einer IP-Adresse zugeordnet.
Wenn du Google.com in deine Adressleiste eingibst, führt dein ISP eine DNS-Abfrage durch, um die mit der Domain verbundenen Nameserver abzufragen. Die Zuordnung zu der IP-Adresse erfolgt dann hinter den Kulissen durch den Server, der es dir dann ermöglicht, den Domainnamen zu verwenden, um darauf zuzugreifen. Ohne DNS müsstest du etwas wie 216.58.217.206 eingeben, um zu Google zu gelangen. Wäre das nicht lustig!
Wenn du zu einer Webseite surfst, muss für jede Domain, die angefordert wird, ein DNS-Lookup durchgeführt werden, bevor etwas heruntergeladen wird. Allerdings muss nicht für jede Ressource ein DNS-Lookup durchgeführt werden. Nehmen wir zum Beispiel an, wir haben die folgenden HTTP-Anfragen:
https://wpdev.ink/
https://js.stripe.com/v3/
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/images/header.jpg
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/global.js
https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js
https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2
https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2
Auch wenn es oben insgesamt acht HTTP-Anfragen gibt, gibt es insgesamt nur drei eindeutige Domains. Was bedeutet, dass es drei DNS-Lookups gibt.
https://wpdev.ink
https://js.stripe.com
https://cdn.wpdev.ink
Du kannst eine Webseite nicht besuchen, ohne vorher auf einen Domain Name Server (DNS) zuzugreifen. Wenn DNS-Probleme auftreten, kann es sein, dass du die Fehlermeldung „DNS server not responding“ erhältst, was darauf hindeutet, dass das dezentrale Namenssystem, das für die Umwandlung von Hostnamen in IP-Adressen zuständig ist, nicht geantwortet hat.
DNS-Lookups im Pingdom
Unten seht ihr, wie die obigen Anfragen im Geschwindigkeitstesttool der Webseite von Pingdom erscheinen. DNS wird als rosa Balken dargestellt und in ms gemessen. Wenn du deine Webseite das erste Mal durch Pingdom laufen lässt, führt es eine neue Suche durch, und es muss den DNS-Eintrag jeder Domain abfragen, um die IP-Informationen zu erhalten. Beachte, dass es nicht mehrmals DNS auf der Domain cdn.wpdev.ink abfragen muss. So funktioniert DNS. Es muss eine Domain nur einmal abfragen. Also gibt es unten insgesamt 8 Anfragen, aber nur 3 DNS-Abfragen.
Diese DNS-Abfragen führen zu zusätzlicher Ladezeit, da nichts geladen werden kann, bis die DNS-Abfragen abgeschlossen sind. Beachte weiter unten, dass der DNS-Lookup auf der einen CDN-URL über 300 ms dauerte. Und das schließt nicht die Nachforschungen auf wpdev.ink oder js.stripe.com mit ein. Ihr könnt also sehen, wie sich das mit der Zeit summieren kann.
Wenn du deine Webseite mehr als einmal durch Pingdom laufen lässt, cached es die DNS, weil es die IP-Informationen bereits kennt und die Suche nicht noch einmal durchführen muss. Dies ist ein Grund dafür, dass deine Webseite schneller erscheint, wenn du sie mehrmals durch Pingdom laufen lässt. Wie du auf dem Bildschirm unten sehen kannst, beträgt beim 2. Test die DNS-Lookup-Zeit auf der CDN-URL 0 ms. Dies ist ein Bereich, der von vielen Leuten falsch interpretiert wird. Aber keine Sorge, wir werden weiter unten mehr in den DNS-Cache eintauchen.
DNS-Lookups in GTmetrix
Jedes Tool für den Geschwindigkeitstest von Webseiten funktioniert etwas anders, aber fast alle berechnen DNS-Lookup-Zeiten für dich. Unten siehst du, wie die gleichen Anfragen in GTmetrix erscheinen. DNS wird als grüner Balken dargestellt und in ms gemessen.
DNS-Lookups in WebPagetest
Hier ist ein Beispiel mit WebPageTest. Dort haben sie tatsächlich einen schnellen Überblick über die Details deiner Anfrage, in dem du auf die Spalte „DNS-Lookup“ klicken und es nach den höchsten Response-Zeiten sortieren kannst. Wir haben usatoday.com als Beispiel durch das Tool laufen lassen, und allein die DNS-Lookup-Zeit dauerte 6,5 Sekunden!
Es kommt ziemlich häufig vor, dass viele dieser Webseiten nicht hochoptimiert sind, weil sie alle externen Anfragen haben. Aber wie du sehen kannst, hat die DNS-Suchzeit auf deiner Webseite wahrscheinlich mehr Zeit in Anspruch genommen als auf den ganzen Seiten der meisten Leute. Das ist der Grund, warum DNS wichtig ist.
Wie man DNS-Lookups reduziert und beschleunigt
Jetzt, wo du ein wenig mehr darüber weißt, wie DNS funktioniert, zeigen wir dir einige Empfehlungen, wie du DNS-Lookups reduzieren und auf deiner Webseite beschleunigen kannst. In einigen Tools zum Testen der Website-Geschwindigkeit wird dies manchmal auch als „DNS-Lookups minimieren“ bezeichnet.
Tipp 1 – Benutze einen Fast DNS Provider
Es ist wichtig zu verstehen, dass es, genau wie beim Hosting, schnellere und langsamere DNS-Provider gibt. Dies sollte eines der ersten Dinge sein, die du in Ordnung bringst.
Normalerweise ist die kostenlose DNS, die von Domain-Registraren wie GoDaddy und Namecheap angeboten wird, sehr langsam. DNS-Provider funktionieren normalerweise genau wie ein CDN, sie haben mehrere POPs rund um den Globus. Große DNS-Provider da draußen wie Amazon, Cloudflare, Dyn und DNS Made Easy, haben alle eine riesige Infrastruktur, die speziell für DNS mit niedriger Latenz entwickelt wurde.
Wir haben ein paar Tests durchgeführt, um die Geschwindigkeiten einiger bekannter DNS-Provider zu vergleichen. Wir haben sowohl das Performance Tool von KeyCDN als auch den SolveDNS Geschwindigkeitstest benutzt und den Durchschnitt genommen. Die Geschwindigkeiten wurden von verschiedenen Orten auf der ganzen Welt gemessen. Wie du sehen kannst, sind die kostenlosen DNS-Provider, anders als Cloudflare, definitiv langsamer. Wenn du es mit deinem Geschäft und deiner Webseite ernst meinst, empfehlen wir dir daher dringend, einen Premium-DNS-Anbieter zu wählen.
Einige der oben genannten Provider sind in bestimmten Regionen auch schneller als andere, daher ist es wichtig zu bestimmen, wo du schnelle DNS-Lookup-Zeiten brauchst, regional oder global. DNSPerf ist ein weiteres neueres Tool zum Vergleich der DNS-Geschwindigkeit, das du bei der Wahl eines Providers verwenden kannst. Wusstest du, dass du die DNS von Cloudflare auch ohne deren CDN-Funktionalität nutzen kannst?
Tipp 2 – Ändere die TTL-Werte, um die Vorteile des DNS-Caches zu nutzen
Glücklicherweise, wie wir oben erwähnt haben, musst du dir dank DNS-Cache keine Sorgen machen, dass bei jedem Seitenaufruf nachgeschlagen wird. Es geht wirklich um die ersten Anfragen. Der DNS-Cache funktioniert ähnlich wie der Cache deiner WordPress-Seite. DNS wird aus dem Cache bedient, bis er abläuft (hier ist, wie du deinen DNS-Cache leeren kannst). Die Länge des DNS-Caches wird durch den sogenannten TTL-Wert (Time to Live) bestimmt. Je höher der TTL-Wert, desto unwahrscheinlicher ist es, dass der Browser einen weiteren DNS-Lookup durchführen muss.
Die TTL-Werte können bei deiner Domain-Registrierungsstelle oder einem 3rd-Party-DNS-Provider geändert werden, um die DNS-Cache-Zeiten zu verbessern. Es ist wichtig zu beachten, dass ISPs auch DNS cachen. Unten sind ein paar übliche TTL-Werte aufgeführt.
- 300 Sekunden = 5 Minuten
- 1800 Sekunden = 30 Minuten
- 3600 Sekunden = 1 Stunde
- 43200 Sekunden = 12 Stunden
- 86400 Sekunden = 24 Stunden
30 Minuten bis zu einer Stunde sind normalerweise die am häufigsten verwendeten TTL-Werte. Einige setzen ihre TTL-Werte jedoch auch sehr niedrig, um schnelle Updates zu ermöglichen. Cloudflare ist ein Beispiel, das auf 5 Minuten voreingestellt ist, wenn du ihre automatische TTL verwendest. Es kann auch vorteilhaft sein, sich die verschiedenen Arten von DNS-Einträgen anzusehen und sie entsprechend einzustellen, je nachdem, wie oft sie sich ändern. Hier ist ein Beispiel:
- A und AAAA rekords: Wechsle häufiger, irgendwo zwischen 5 Minuten und einer Stunde ist normalerweise OK.
- CNAME-Aufzeichnungen: Ändert sich fast nie, ein höherer TTL wie 24 Stunden ist normalerweise OK.
- NS-records: Ändern sich fast nie, ein höherer TTL wie 24 Stunden ist normalerweise OK
- MX-records: Wechsle weniger oft, ein hoher TTL wie 12 Stunden ist normalerweise OK.
- TXT-records: Wechsle weniger oft, ein hoher TTL wie 12 Stunden ist normalerweise OK.
Es gibt wirklich keine richtige oder falsche Antwort, wenn es um TTL geht. Aber es kann deine DNS-Lookup-Zeiten verbessern, indem du eine TTL wählst, die damit übereinstimmt, wie oft Änderungen auf deiner Webseite vorgenommen werden.
Tipp 3 – Verringere die Anzahl der Domains (Hostnamen)
Der einfachste Weg, die DNS-Lookups auf deiner Webseite zu reduzieren, ist es, einfach die Anfragen loszuwerden, die verschiedene Hostnamen abfragen. Denke daran, dass es bei DNS-Lookups nicht um die Anzahl der Anfragen geht, sondern um die Anzahl der verschiedenen Domains. Lass deine WordPress Seite durch ein Tool wie Pingdom laufen und stelle fest, ob jede Anfrage wirklich notwendig ist. Da DNS eine Zuordnung eines Hostnamens zu einer IP ist, fragst du dich vielleicht, warum die Leute stattdessen nicht einfach auf eine IP zeigen? Das liegt daran, dass eine IP-Adresse sich häufig ändern kann, Hostnamen hingegen nicht.
Tipp 4 – Alternative Dienste mit schnellerem DNS nutzen
Obwohl es einfacher gesagt als getan ist, die Anzahl der Domains (Hostnamen) zu reduzieren, empfehlen wir, sich zuerst diejenigen mit höheren DNS-Lookup-Zeiten anzusehen. Zum Beispiel können wir auf dieser Webseite, die wir unten getestet haben, leicht feststellen, dass die DNS-Lookup-Zeit für das Crazy Egg Tracking-Skript viel länger war als bei anderen. Das liegt höchstwahrscheinlich daran, dass ihr DNS-Provider nicht so schnell ist wie einige der anderen.
Dies ist ein Szenario, bei dem du dir vielleicht andere Provider wie Hotjar ansehen könntest, die denselben Service anbieten, aber vielleicht einen schnelleren DNS-Provider benutzen. Es kann sehr wichtig sein, wenn du externe Dienste zu deiner WordPress Seite hinzufügst, dass du deren Leistung evaluierst.
Tipp 5 – Ressourcen auf einem CDN verschieben und hosten
Einer der einfachsten Wege, DNS-Lookups zu reduzieren, ist es, so viele Ressourcen wie möglich zu deinem CDN-Provider zu verschieben. Wenn du deine Webseite über Pingdom betreibst, kannst du die Gesamtzahl der Anfragen pro Domain sehen. Wie du in diesem Beispiel sehen kannst, sind 93,8% der Anfragen an die CDN-URL gerichtet. Es gibt eine Anfrage an den Host und eine an Google Analytics. Indem so viele Ressourcen wie möglich in das CDN verschoben werden, wird die Anzahl der DNS-Lookups reduziert und somit die Ladezeiten verkürzt.
Jetzt wird es natürlich nicht immer möglich sein, alles in dein CDN zu verschieben. Es wird immer einige externe Ressourcen oder Dienste geben, die es erfordern, dass du sie von ihren Servern lädst. Aber wir empfehlen dir, deine Webseite zu durchsuchen. Oft sehen wir, dass WordPress-Benutzer eine Menge Ressourcen haben, die nicht richtig auf ihrem CDN gehostet sind. Auf diese Weise kannst du auch die Vorteile von HTTP/2 und Parallelisierung besser nutzen. Unten sind ein paar Ressourcen, die wir oft sehen, die verbessert werden könnten:
Font Awesome
Wir sehen gelegentlich Plugin-Entwickler und Themes, die Font Awesome auf WordPress Seiten enthalten, aber manchmal reiht es sich so ein, dass es standardmäßig von einem Plugin wie CDN Enabler nicht erkannt wird. In diesem Fall empfehlen wir dir, den Entwickler zu fragen, wie du es von deinem CDN laden kannst.
Ein anderes übliches Szenario mit Font Awesome ist, dass es manchmal aus dem standardmäßigen BootstrapCDN (MaxCDN) geladen wird. Zwar ist daran nichts falsch, aber es fügt einen weiteren DNS-Lookup hinzu, den du nicht brauchst. In den meisten Fällen wäre es besser, Font Awesome von deinem eigenen CDN zu laden, damit es keinen weiteren Lookup gibt.
Gravatars
Wenn du WordPress-eigene Kommentare verwendest, solltest du zusätzlich auf secure.gravatar.com nachschauen, um die Gravatare zu laden. Eine einfache Lösung könnte hier sein, das Lazy Loading Kommentar Plugin zu benutzen. Das reduziert zwar nicht den DNS-Lookup, aber es verzögert es, bis der Benutzer die Seite herunterscrollt. In gewisser Weise reduziert ihr also den DNS-Lookup beim Laden der ersten Seite. In unserem Blog-Post findest du weitere Möglichkeiten, die Kommentare zu beschleunigen.
Google Fonts
Mit Google Fonts hast du eine zusätzliche DNS-Anfrage zum Nachschlagen unter fonts.googleapis.com, um die CSS-Datei zu holen. Dann hast du noch eine zusätzliche Anfrage an fonts.gstatic.com, um die Schriftartendateien herunterzuladen. Wenn du lokal hostest, sind alle Anfragen von derselben Domain oder CDN, und höchstwahrscheinlich brauchst du keine weitere CSS-Datei, da es innerhalb der CSS-Datei deines WordPress Themes sein wird. Es gibt Vor- und Nachteile, dies zu tun, aber schau dir unseren ausführlichen Artikel darüber an, wie man Schriften lokal hostet.
Font Awesome, Gravatars und Google Fonts sind nur ein paar Beispiele dafür, wie du DNS-Lookups reduzieren kannst, indem du sicherstellst, dass sie von deinem CDN geladen werden. Lädst du derzeit alles Mögliche von deinem CDN? Es ist immer gut, einen Blick darauf zu werfen.
Tipp 6 – Nutze die Vorteile des DNS-Prefetchings
Ein weiterer Tipp zur Beschleunigung von DNS ist die Verwendung von DNS-Prefetching. Dadurch kann der Browser DNS-Lookups auf einer Seite im Hintergrund durchführen. Du kannst dies tun, indem du einige Zeilen Code in den Header deiner WordPress Seite einfügst. Siehe einige Beispiele unten.
<!– Prefetch DNS for external assets –>
<link rel=“dns-prefetch“ href=“//fonts.googleapis.com“>
<link rel=“dns-prefetch“ href=“//www.google-analytics.com“>
<link rel=“dns-prefetch“ href=“//cdn.domain.com“>
DNS-Prefetch wird auch von allen gängigen Browsern unterstützt, außer iOS Safari, Opera Mini und Android Browser.
Oder wenn du WordPress Version 4.6 oder neuer verwendest, solltest du vielleicht Ressourcen-Hinweise verwenden. Entwickler können den wp_resource_hints Filter benutzen, um eigene Domains und URLs für dns-prefetch, preconnect, prefetch oder prerender hinzuzufügen.
Tipp 7 – Das Laden von JavaScript aufschieben
Wenn du das Laden von JavaScript aufschiebst, kann dies verhindern, dass Dinge erst dann geladen werden, wenn das Dokument vollständig geladen ist. Dadurch wird die Anzahl der erforderlichen DNS-Lookups nicht verringert, aber es verhindert, dass sie sofort aufgerufen werden, was die Benutzerfahrung beschleunigen kann. Varvy hat eine großartige Erklärung, wie man JavaScript aufschieben kann. Ein Beispiel, das er auf seiner Webseite benutzt, ist sein Google Analytics Skript, da es keinen Grund dafür gibt, dass es Above the Fold lädt.
In WordPress kannst du ein kostenloses Plugin wie Async JavaScript verwenden, um das Laden von JavaScript zu verzögern. Es ist jedoch wichtig zu wissen, dass du höchstwahrscheinlich alle Skripte durchgehen und auflisten musst, die du von der Anwendung des Aufschubs ausgeschlossen haben möchtest. Warum? Weil einige JavaScript benötigt werden, um über der Falte zu rendern. Async JavaScript ist außerdem vollständig kompatibel mit dem Autoptimize Plugin.
Schaut euch auch unseren ausführlichen Beitrag darüber an, wie man Render-blockierendes JavaScript und CSS beseitigen kann.
Tipp 8 – Nutze die Vorteile von ANAME Records und CNAME Flattening
Es gibt zusätzliche Einträge von Providern wie DNS Made Easy und Cloudflare, die helfen können, die Anzahl der Anfragen im Backend zu reduzieren.
ANAME-Einträge mit DNS leicht gemacht
ANAME-Einträge geben dir die Funktionalität eines CNAME-Eintrags, aber auf der Root-Ebene. Sagen wir zum Beispiel, du hast einen CNAME-Eintrag für www.domain.com konfiguriert. Das www muss zuerst zum Hostnamen und dann zur IP-Adresse auflösen. Dies erfordert zwei Anfragen. Mit einem ANAME-Record kannst du eine dieser Anfragen überspringen! Bei richtiger Konfiguration können diese auch in Verbindung mit einem CDN verwendet werden.
CNAME
ANSWER SECTION:
www.domain.com. 1799 IN CNAME domain.com.
domain.com. 1799 IN A 192.168.1.2
ANAME
ANSWER SECTION:
www.domain.com. 1799 IN A 192.168.1.2
Dies trifft jedoch nicht immer zu. Wenn sich der Hostname in der gleichen DNS-Zone befindet, wird der A-Eintrag möglicherweise in der gleichen Anfrage abgerufen.
CNAME Abflachung mit Cloudflare
Ähnlich wie ANAME-Einträge bietet Cloudflare seinen Kunden eine automatische CNAME-Abflachung an der Zonenspitze (oder Wurzel).
Zusammenfassung
DNS ist oft einer dieser Leistungsfaktoren, der übersehen wird, aber es kann leicht zu einem großen Teil der gesamten Ladezeit beitragen, wenn du nicht aufpasst. Es ist wichtig zu verstehen, wie DNS funktioniert, dass es schnellere und langsamere Anbieter gibt und wie man Lookups reduzieren kann, um die Webseite zu beschleunigen.
Hast du weitere Tipps zur Beschleunigung von DNS oder zur Reduzierung von Lookups? Wenn ja, würden wir uns freuen, sie unten in den Kommentaren zu hören!
Schreibe einen Kommentar