Il y a beaucoup d’optimisations différentes que vous pouvez faire quand il s’agit de WordPress, et certaines sont plus importantes que d’autres. Un facteur souvent négligé est le temps de recherche associé aux DNS et l’impact qu’il a sur votre site. Tout comme le TTFB et la latence du réseau, il s’agit d’une pièce importante du puzzle lorsqu’il s’agit de calculer le temps de chargement total de vos pages. Aujourd’hui, nous allons donc nous plonger dans quelques recommandations sur la façon de réduire les recherches DNS et de les accélérer, pourquoi vous devriez, et comment cela joue un rôle dans les performances de votre site WordPress.
Qu’est-ce que le DNS Lookup (vérification DNS) ?
Pour vous montrer ce qu’est une vérification DNS, vous devez d’abord comprendre comment fonctionnent les DNS. Le DNS (système de noms de domaine) est essentiellement l’épine dorsale de l’Internet. Une référence commune pour expliquer comment fonctionne le DNS est de le considérer comme un annuaire téléphonique pour le World Wide Web. Chaque site Web et chaque domaine que vous visitez sont tous mappés sur une adresse IP.
Lorsque vous tapez Google.com dans votre barre d’adresse, une requête DNS est effectuée par votre FAI pour demander les serveurs de noms associés au domaine. Le mappage à l’adresse IP se fait alors en coulisse par le serveur qui vous permet ensuite d’utiliser le nom de domaine pour y accéder. Sans DNS, il vous faudrait taper quelque chose comme 216.58.217.206 pour accéder à Google. Ce serait amusant, non ?
Lorsque vous naviguez sur un site Web, une recherche DNS doit être effectuée pour chaque domaine demandé avant de télécharger quoi que ce soit. Cependant, il n’est pas nécessaire d’effectuer une recherche DNS sur chaque ressource. Par exemple, disons que nous avons les requêtes HTTP suivantes :
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
Bien qu’il y ait un total de huit requêtes HTTP ci-dessus, il n’y a que trois domaines uniques au total. Ce qui signifie qu’il y a trois recherches DNS.
https://wpdev.ink
https://js.stripe.com
https://cdn.wpdev.ink
Vous ne pouvez pas visiter un site web sans accéder au préalable à un serveur de noms de domaine (DNS). En cas de problèmes de DNS, vous pouvez être confronté à l’erreur « DNS server not responding », qui suggère que les systèmes de nommage décentralisés chargés de transformer les noms d’hôtes en adresses IP n’ont pas répondu.
DNS Lookups dans Pingdom
Voici comment les requêtes ci-dessus apparaissent dans l’outil de test de vitesse de site Pingdom. Le DNS est représenté par la barre rose et mesuré en ms. Lorsque vous testez votre site Web pour la première fois sur Pingdom, il effectue une nouvelle recherche, et il doit interroger l’enregistrement DNS de chaque domaine pour obtenir l’information IP. Notez qu’il n’a pas besoin d’interroger le DNS plusieurs fois sur le domaine cdn.wpdev.ink. C’est ainsi que fonctionne le DNS. Il n’a qu’à interroger un domaine une seule fois. Il y a donc 8 requêtes au total ci-dessous, mais seulement 3 recherches DNS.
Ces recherches DNS se traduisent par un temps de chargement supplémentaire, car rien ne peut être chargé tant que les recherches DNS ne sont pas terminées. Notez ci-dessous que la recherche DNS sur l’URL CDN a pris plus de 300 ms. Et cela n’inclut pas les recherches sur wpdev.ink ou js.stripe.com. Vous pouvez donc voir comment cela peut s’accumuler au fil du temps.
Lorsque vous testez votre site web sur Pingdom plus d’une fois, il met en cache le DNS parce qu’il connaît déjà les informations IP et n’a pas à effectuer la recherche à nouveau. C’est une des raisons pour lesquelles votre site web apparaît plus rapidement après l’avoir testé plusieurs fois sur Pingdom. Comme vous pouvez le voir dans l’écran ci-dessous, lors du 2ème test, le temps de recherche DNS sur l’URL CDN est de 0 ms. C’est un domaine que beaucoup de gens interprètent mal. Mais ne vous inquiétez pas, nous allons plonger davantage dans le cache DNS ci-dessous.
DNS Lookups dans GTmetrix
Chaque outil de test de vitesse de site Web fonctionne légèrement différemment, mais presque tous calculent les temps de recherche DNS pour vous. Voici comment les mêmes requêtes apparaissent dans GTmetrix. Le DNS est représenté par la barre verte et mesuré en ms.
DNS Lookups dans WebPagetest
Voici un exemple d’utilisation de WebPageTest. Ils ont en fait une vue d’ensemble rapide des détails de votre requête dans laquelle vous pouvez cliquer sur la colonne « Recherche DNS » et la trier par les temps de réponse les plus élevés. Nous avons lancé usatoday.com sur l’outil à titre d’exemple, et le temps de recherche DNS a pris 6,5 secondes !
Il est assez courant que beaucoup de ces sites de nouvelles ne soient pas très optimisés en raison de toutes leurs demandes externes. Mais comme vous pouvez le voir, le temps de recherche DNS sur leur site a probablement pris plus de temps que les sites entiers de la plupart des gens. C’est pourquoi le DNS est important.
Comment réduire et accélerer les DNS Lookups
Maintenant que vous en savez un peu plus sur le fonctionnement de DNS, nous allons vous montrer quelques recommandations pour réduire les recherches DNS et les accélérer sur votre site WordPress. Dans certains outils de test de vitesse de site Web, on parle aussi parfois de « réduire au minimum les recherches DNS ».
Astuce 1 – Utilisez un fournisseur DNS rapide
Il est important de comprendre que, tout comme pour l’hébergement, il existe des fournisseurs DNS plus rapides et lents. Cela devrait être l’une des premières choses que vous devriez réparer.
Généralement, les DNS gratuits fournis par les bureaux d’enregistrement de domaines comme GoDaddy et Namecheap sont très lents. Les fournisseurs DNS fonctionnent généralement comme un CDN, ils ont plusieurs POPs dans le monde entier. Les grands fournisseurs de DNS comme Amazon, Cloudflare, Dyn et DNS Made Easy disposent tous d’une infrastructure massive spécialement conçue pour les environnements DNS à faible latence.
Nous avons fait quelques tests pour comparer les vitesses de certains fournisseurs DNS populaires. Nous avons utilisé l’outil de performance de KeyCDN ainsi que le test de vitesse SolveDNS, et avons pris la moyenne. Les vitesses ont été mesurées à partir de plusieurs endroits dans le monde. Comme vous pouvez le voir, à part Cloudflare, les fournisseurs de DNS gratuits sont nettement plus lents. C’est pourquoi, si vous êtes sérieux au sujet de votre entreprise et de votre site Web, nous vous recommandons fortement d’opter pour un fournisseur DNS haut de gamme.
Certains des fournisseurs ci-dessus sont également plus rapides que d’autres dans certaines régions, il est donc important de déterminer si vous avez besoin de temps de recherche DNS rapides, au niveau régional ou mondial. DNSPerf est un autre nouvel outil de comparaison de vitesse DNS que vous pouvez utiliser lorsque vous choisissez un fournisseur. Saviez-vous que vous pouvez également utiliser le DNS de Cloudflare sans leur fonctionnalité CDN ?
Astuce 2 – Modifier les valeurs TTL pour profiter du cache DNS
Heureusement, comme nous l’avons mentionné plus haut, grâce au cache DNS, vous n’avez pas à vous soucier des recherches qui se produisent à chaque chargement de page. Il s’agit en fait d’une première demande. Le cache DNS fonctionne de la même manière que le cache de votre site WordPress. Le DNS est servi depuis le cache jusqu’à son expiration (Voici comment vider votre cache DNS). La durée du cache DNS est déterminée par ce qu’ils appellent une valeur TTL (Time to Live). Plus le TTL est élevé, moins le navigateur aura besoin d’effectuer une autre recherche DNS.
Les valeurs TTL peuvent être modifiées auprès de votre registraire de domaine ou d’un fournisseur DNS tiers pour améliorer vos temps de cache DNS. Il est important de noter que les FAI mettent également le DNS en cache. Vous trouverez ci-dessous quelques valeurs TTL courantes.
- 300 secondes = 5 minutes
- 1800 secondes = 30 minutes
- 3600 secondes = 1 heure
- 43200 secondes = 12 heures
- 86400 secondes = 24 heures
30 minutes à une heure sont généralement les valeurs TTL les plus couramment utilisées. Cependant, certains d’entre eux fixent également leur TTL à un niveau très bas pour permettre des mises à jour rapides. Cloudflare est un exemple qui est par défaut à 5 minutes si vous utilisez leur TTL automatique. Il peut également être utile d’examiner vos différents types d’enregistrements DNS et de les configurer en fonction de leur fréquence de modification. En voici un exemple :
- Enregistrements A et AAAA : Changez plus fréquemment, entre 5 minutes et une heure, c’est généralement OK.
- Enregistrements CNAME : Presque jamais changé, un TTL plus élevé comme 24 heures est généralement OK.
- Enregistrements NS : Ne change presque jamais, un TTL plus élevé comme 24 heures est généralement OK.
- Enregistrements MX : Changez moins souvent, un TTL élevé comme 12 heures est généralement OK.
- Enregistrements TXT : Changez moins souvent, un TTL élevé comme 12 heures est généralement OK.
Astuce 3 – Réduire le nombre de domaines (noms d’hôtes)
La façon la plus simple de réduire les recherches DNS sur votre site est de se débarrasser simplement des requêtes qui interrogent différents noms d’hôtes. Rappelez-vous qu’avec les recherches DNS, il ne s’agit pas du nombre de requêtes, mais du nombre de domaines différents. Testtez votre site WordPress avec un outil comme Pingdom et déterminez si chaque requête est vraiment nécessaire. Puisque le DNS est un mappage d’un nom d’hôte à une adresse IP, vous vous demandez peut-être pourquoi les gens ne se contentent pas de pointer vers une adresse IP à la place ? C’est parce qu’une adresse IP peut changer fréquemment, alors que les noms d’hôtes ne le feront pas.
Astuce 4 – Utilisez des services alternatifs avec un DNS plus rapide
Bien qu’il soit plus facile à dire qu’à faire de réduire le nombre de domaines (noms d’hôtes), nous recommandons de regarder d’abord ceux dont les temps de recherche DNS sont plus élevés. Par exemple, dans ce site que nous avons testé ci-dessous, nous pouvons facilement constater que le temps de recherche DNS du script de suivi Crazy Egg était beaucoup plus long que les autres. Ceci est probablement dû au fait que leur fournisseur DNS n’est pas aussi rapide que certains autres.
C’est un scénario où vous pourriez peut-être regarder d’autres fournisseurs comme Hotjar, qui fournissent le même service, mais qui utilisent peut-être un fournisseur DNS plus rapide. Il peut être très important lorsque vous ajoutez des services externes à votre site WordPress d’évaluer leurs performances.
Astuce 5 – Déplacer et héberger des ressources sur un CDN
L’un des moyens les plus simples de réduire les recherches DNS est de transférer autant de ressources que possible vers votre fournisseur CDN. Si vous testez votre site via Pingdom, vous pouvez voir le nombre total de requêtes par domaine. Comme vous pouvez le voir dans cet exemple, 93,8 % des demandes sont dirigées vers l’URL CDN. Il y a une demande à l’hôte et une à Google Analytics. En déplaçant autant de ressources que possible vers le CDN, cela réduit le nombre de recherches DNS impliquées, diminuant ainsi les temps de chargement.
Maintenant, bien sûr, il ne sera pas toujours possible de tout transférer dans votre CDN. Il y aura toujours des ressources ou des services externes qui vous demanderont de les charger à partir de leurs serveurs. Mais nous vous recommandons de parcourir votre site. Souvent, nous constatons que les utilisateurs de WordPress ont beaucoup de ressources qui ne sont pas correctement hébergées sur leur CDN. Ce faisant, vous pouvez également tirer un meilleur parti de HTTP/2 et de la parallélisation. Vous trouverez ci-dessous quelques ressources que nous voyons souvent et qui pourraient être améliorées :
Font Awesome
Nous voyons parfois des développeurs de plugins et les thèmes qui incluent Font Awesome sur les sites WordPress, mais parfois la file d’attente est de telle manière que par défaut un plugin comme CDN enabler ne l’attrape pas. Dans ce cas, nous vous recommandons de contacter le développeur pour lui demander comment vous pouvez le charger depuis votre CDN.
Un autre scénario courant avec Font Awesome est qu’il est parfois chargé à partir du BootstrapCDN par défaut (MaxCDN). Bien qu’il n’y ait rien de mal à cela, il ajoute une autre recherche DNS dont vous n’avez pas besoin. Il serait préférable dans la plupart des cas de charger Font Awesome à partir de votre propre CDN pour qu’il n’y ait pas d’autre recherche.
Gravatars
Si vous utilisez des commentaires natifs WordPress, vous pouvez avoir une recherche supplémentaire sur secure.gravatar.com pour charger les gravatars. Une solution facile ici pourrait être d’utiliser le plugin lazy load comments. Bien que cela ne réduira pas la recherche DNS, cela la retardera jusqu’à ce que l’utilisateur fasse défiler la page vers le bas. Dans un sens, vous réduisez donc la recherche DNS sur la charge de la première page. N’oubliez pas de jeter un coup d’œil à notre blog sur d’autres façons d’accélérer les commentaires.
Polices Google
Avec Google Fonts, vous avez une requête DNS supplémentaire pour rechercher fonts.googleapis.com pour récupérer le fichier CSS. Vous avez ensuite d’autres demandes à fonts.gstatic.com pour télécharger les fichiers de polices. Lorsque vous hébergez localement, toutes les requêtes proviennent du même domaine ou CDN, et vous n’aurez probablement pas besoin d’un autre fichier CSS car il se trouvera dans le fichier CSS de votre thème WordPress. Il y a des avantages et des inconvénients à faire cela, mais jetez un coup d’œil à notre article détaillé sur la façon d’héberger les polices localement.
Font Awesome, Gravatars et Google Fonts ne sont que quelques exemples de moyens de réduire les recherches DNS en vous assurant qu’elles sont chargées à partir de votre CDN. Êtes-vous en train de charger tout ce qui est possible à partir de votre CDN ? C’est toujours bon de jeter un coup d’oeil.
Tip 6 – Profitez des avantages de DNS Prefetch (pré-recherche)
Un autre conseil pour accélérer le DNS est d’utiliser le DNS Prefetch. Ceci permet au navigateur d’effectuer des recherches DNS sur une page en arrière-plan. Vous pouvez le faire en ajoutant quelques lignes de code au header de votre site WordPress. Voir quelques exemples ci-dessous.
<!-- 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 est également supporté par tous les principaux navigateurs à l’exception de iOS Safari, Opera Mini, et Android Browser.
Ou si vous utilisez WordPress version 4.6 ou plus récente, vous voudrez peut-être utiliser des conseils de ressources. Les développeurs peuvent utiliser le filtre wp_resource_hints pour ajouter des domaines et URL personnalisés pour dns-prefetch, preconnect, prefetch ou prerender.
Astuce 7 – Différer le chargement de JavaScript
Si vous reportez le chargement de JavaScript, cela peut empêcher les choses de se charger jusqu’à ce que le document soit complètement chargé. Cela ne réduira pas le nombre de recherches DNS nécessaires, mais cela les empêchera d’être appelées immédiatement, ce qui peut accélérer l’expérience utilisateur. Varvy a une grande explication sur la façon de différer JavaScript. Un exemple qu’il utilise sur son site est son script Google Analytics, puisqu’il n’y a aucune raison qu’il se charge au-dessus de la ligne de flottaison.
Dans WordPress, vous pouvez utiliser un plugin gratuit comme Async JavaScript pour différer le chargement de JavaScript. Cependant, il est important de savoir que vous devrez très probablement passer en revue et énumérer tous les scripts que vous aimeriez voir exclus de la demande de report. Pourquoi ? Parce qu’un peu de JavaScript sera nécessaire pour effectuer l’affichage au-dessus de la ligne de flottaison. Async JavaScript est également entièrement compatible avec le plugin Autoptimize.
N’oubliez pas de consulter également notre article détaillé sur la façon d’éliminer le blocage du rendu en JavaScript et CSS.
Astuce 8 – Profitez des enregistrements ANAME et de CNAME Flattening
Il existe des enregistrements supplémentaires de fournisseurs tels que DNS Made Easy et Cloudflare qui peuvent aider à réduire le nombre de requêtes sur le backend.
Enregistrements ANAME avec DNS Made Easy
Les enregistrements ANAME vous donnent la fonctionnalité d’un enregistrement CNAME, mais au niveau de la racine. Par exemple, disons que vous avez un CNAME configuré pour www.domain.com. Le www doit d’abord être résolu avec le nom d’hôte, puis avec l’adresse IP. Cela nécessite deux demandes. Avec un enregistrement ANAME, vous pouvez sauter une de ces demandes ! S’ils sont correctement configurés, ils peuvent également être utilisés en conjonction avec un CDN.
CNAME
SECTION DE RÉPONSE:
www.domaine.com. 1799 IN CNAME domaine.com.
domaine.com. 1799 IN A 192.168.1.2
ANAME
SECTION DE RÉPONSE:
www.domaine.com. 1799 IN A 192.168.1.2
Cependant, ce n’est pas toujours le cas. Si le nom d’hôte est dans la même zone DNS, l’enregistrement A peut être récupéré dans la même requête.
CNAME Flattening With Cloudflare
Tout comme les enregistrements ANAME, Cloudflare fournit un CNAME Flattening automatique à l’apex (ou racine) de la zone pour leurs clients.
Résumé
Le DNS est souvent un de ces facteurs de performance qui est négligé, mais il peut facilement contribuer à une grande partie de votre temps de chargement global si vous ne faites pas attention. Il est important de comprendre comment fonctionne le DNS, qu’il existe des fournisseurs plus rapides et lents, et comment vous pouvez réduire les recherches pour accélérer votre site.
Avez-vous d’autres conseils pour accélérer les DNS ou réduire les recherches ? Si oui, nous aimerions en entendre parler dans les commentaires ci-dessous !
Merci bcp pour cet article très complet.