Ci sono molte ottimizzazioni che si possono fare in WordPress, e alcune sono più importanti di altre. Un fattore che spesso viene trascurato è il tempo di ricerca associato al DNS e l’impatto che questo ha sul vostro sito. Proprio come nel caso del TTFB e della latenza di rete, è un pezzo importante del puzzle quando si vanno a calcolare i tempi di caricamento totale delle pagine. Quindi oggi vi daremo alcuni consigli per ridurre le risoluzioni del DNS e velocizzarle, vi diremo perché è importante farlo e che ruolo hanno nelle prestazioni del vostro sito WordPress.

Cos’è la Risoluzione del DNS?

Per mostrarvi cos’è una risoluzione del DNS, dovete prima capire come funziona il DNS. Il DNS (domain name system) è essenzialmente la spina dorsale di Internet. Spesso, per spiegare come funziona il DNS, lo si immagina come un elenco telefonico per il world wide web. Ogni sito web e ogni dominio che si visita sono tutti mappati su un indirizzo IP.

Quando si digita Google.com nella barra degli indirizzi, viene eseguita una query DNS dal proprio ISP per richiedere i nameserver associati al dominio. La mappatura dell’indirizzo IP viene poi effettuata dietro le quinte dal server, il quale consente di utilizzare il nome del dominio per accedervi. Senza DNS sarebbe necessario digitare qualcosa come 216.58.217.206 per arrivare a Google. Non sarebbe bello!

Come funziona il DNS
Come funziona il DNS

Quando accedete ad un sito web, è necessaria una risoluzione del DNS per ogni dominio richiesto prima che venga scaricata qualsiasi cosa. Tuttavia, non è necessario eseguire una risoluzione del DNS su ogni risorsa. Diciamo, ad esempio, che abbiamo le seguenti richieste HTTP:

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

Anche se ci sono un totale di otto richieste HTTP, complessivamente ci sono solo tre domini unici. Il che significa che ci sono tre risoluzioni del DNS.

https://wpdev.ink
https://js.stripe.com
https://cdn.wpdev.ink

Non è possibile visitare un sito web senza prima accedere a un Domain Name Server (DNS). In caso di problemi con il DNS, potreste trovarvi di fronte all’errore “DNS server not responding“, che indica che il sistema di denominazione decentralizzato responsabile della trasformazione dei nomi host in indirizzi IP non ha risposto.

Risoluzioni DNS in Pingdom

Di seguito è riportato il modo in cui le richieste qui sopra appaiono nello speed test dei siti web di Pingdom. Il DNS è rappresentato come la barra rosa e misurato in ms. Quando eseguite per la prima volta il sito web su Pingdom, questo deve effettuare un nuovo look up, e deve interrogare il record DNS di ogni dominio per ottenere le informazioni sull’IP. Notate che non deve interrogare il DNS più volte sul dominio cdn.wpdev.ink. È così che funziona il DNS. Deve effettuare la ricerca di un dominio solo una volta. Quindi ci sono 8 richieste totali qui sotto, ma solo 3 ricerche di DNS.

Queste risoluzioni del DNS si traducono in un tempo di carico aggiuntivo, dovuto al fatto che nulla può caricare fino a quando le risoluzioni del DNS non sono finite. Si noti che la risoluzione del DNS sull’URL di un CDN ha richiesto più di 300 ms. E questo non comprende le ricerche su wpdev.ink o js.stripe.com. Quindi si vede chiaramente come questo si somma nel tempo.

Risoluzioni DNS in Pingdom
Risoluzioni DNS in Pingdom

Quando si esegue il proprio sito web su Pingdom più di una volta, il DNS viene messo in cache perché le informazioni sugli IP sono già note e non è più necessario effettuare la ricerca. Questo è uno dei motivi per cui il vostro sito web sembra essere più veloce dopo averlo fatto girare più volte su Pingdom. Come potete vedere nella schermata sottostante, nel secondo test, il tempo di risoluzione del DNS sull’URL del CDN è di 0 ms. Questo è un ambito che molte persone fraintendono. Ma non preoccupatevi, analizzeremo più approfonditamente la cache del DNS qui sotto.

La cache DNS in Pingdom
La cache DNS in Pingdom

Risoluzioni DNS in GTmetrix

Ogni strumento di test di velocità dei siti web funziona in modo leggermente diverso, ma quasi tutti calcolano i tempi di risoluzione del DNS. Di seguito si può vedere come le stesse richieste appaiono in GTmetrix. Il DNS è rappresentato dalla barra verde e misurato in ms.

Risoluzioni DNS in GTmetrix
Risoluzioni DNS in GTmetrix

Risoluzioni DNS in WebPagetest

Ecco un esempio in cui è stato utilizzato WebPageTest. Questo strumento offre una rapida panoramica dei dettagli della vostra richiesta in cui potete cliccare sulla colonna “Ricerca DNS” e ordinarla in base ai tempi di risposta più elevati. Come esempio, abbiamo eseguito usatoday.com, e il tempo di risoluzione del DNS da solo ha richiesto 6,5 secondi!

È abbastanza frequente che molti di questi siti di notizie non siano ottimizzati a causa di tutte le loro richieste esterne. Ma come potete vedere, il tempo di risoluzione del DNS su questo sito probabilmente ha richiesto più tempo dell’intero sito della maggior parte delle persone. Questo è il motivo per cui il DNS è importante.

Lunghi tempi di risoluzione del DNS (webpagetest)
Lunghi tempi di risoluzione del DNS (webpagetest)

Come Ridurre e Velocizzare le Risoluzioni del DNS

Ora che sapete un po’ di più su come funziona il DNS, vi daremo alcuni consigli per ridurre e velocizzare le risoluzioni del DNS sul vostro sito WordPress. In alcuni strumenti di speed test dei siti web, viene raccomandato di “ridurre al minimo le risoluzioni del DNS”.

Ridurre al minimo le risoluzioni del DNS su Pingdom
Ridurre al minimo le risoluzioni del DNS su Pingdom

Suggerimento 1 – Utilizzate un Provider DNS Veloce

È importante capire che, proprio come avviene per l’hosting, ci sono provider di DNS più veloci e altri meno veloci. Questa dovrebbe essere una delle prime cose da accertare.

In genere il DNS gratuito fornito da domain registrar come GoDaddy e Namecheap è molto lento. I provider di DNS in genere funzionano proprio come un CDN, hanno più POP in tutto il mondo. I grandi provider di DNS, come Amazon, Cloudflare, Dyn e DNS Made Easy, hanno tutti infrastrutture massicce progettate specificamente per DNS con ambienti a bassa latenza.

Abbiamo eseguito alcuni test per confrontare le velocità di alcuni popolari provider DNS. Abbiamo utilizzato lo strumento di misurazione delle prestazioni di KeyCDN e lo speed test di SolveDNS, e abbiamo fatto la media. Le velocità sono state misurate da diverse località in tutto il mondo. Come si può vedere, a parte Cloudflare, i provider DNS gratuiti sono decisamente più lenti. Ecco perché, se prendete sul serio la vostra attività e il vostro sito web, vi consigliamo vivamente di rivolgervi ad un provider DNS premium.

Velocità dei provider DNS
Velocità dei provider DNS

Alcuni dei provider qui sopra sono più veloci di altri in alcune regioni, quindi è importante determinare dove è necessario una rapida risoluzione del DNS, a livello regionale o globale. DNSPerf è uno strumento più recente di confronto della velocità del DNS che potreste utilizzare quando scegliete un provider. Sapevate che è possibile utilizzare anche il DNS di Cloudflare senza la funzionalità del CDN?

Suggerimento 2 – Modificate i Valori del TTL per Sfruttare la Cache del DNS

Per fortuna, come abbiamo detto sopra, grazie alla Cache del DNS, non dovete preoccuparvi che le ricerche avvengano ad ogni singolo caricamento di pagina. In realtà si tratta solo della prima richiesta. La cache del DNS funziona in modo simile alla cache del sito WordPress. Il DNS viene servito dalla cache fino alla sua scadenza (ecco come fare la pulizia della cache del DNS). La durata della cache del DNS è determinata dal valore del cosideetto TTL (Time to Live). Più alto è il TTL, meno è probabile che il browser debba eseguire un’altra risoluzione del DNS.

I valori del TTL possono essere modificati presso il vostro registrar di dominio o con un provider DNS di terze parti per migliorare i tempi della cache del DNS. È importante notare che anche gli ISP mettono in cache i DNS. Di seguito sono riportati alcuni valori TTL comuni.

  • 300 secondi = 5 minuti
  • 1800 secondi = 30 minuti
  • 3600 secondi = 1 ora
  • 43200 secondi = 12 ore
  • 86400 secondi = 24 ore
Cloudflare TTL
Cloudflare TTL

In genere, i valori TTL più comunemente usati vanno da 30 minuti a un’ora. Tuttavia, alcuni impostano un basso valore di TTL per consentire aggiornamenti rapidi. Cloudflare, ad esempio, ha un valore predefinito di 5 minuti se si usa il loro TTL automatico. Può anche essere utile guardare i diversi tipi di record DNS e impostarli di conseguenza in base alla frequenza con cui cambiano. Ecco un esempio:

  • Record A e AAAA: Cambiare con maggior frequenza, tra 5 minuti a un’ora, di solito va bene
  • Record CNAME: Cambiare quasi mai, un TTL più alto, come 24 ore, di solito va bene.
  • Record NS: Cambiare quasi mai, un TTL più alto, come 24 ore, è di solito OK
  • Record MX: Cambiare con minor frequenza, un TTL alto, come 12 ore, è di solito OK
  • Record TXT: Cambiare con minor frequenza, un TTL alto, come 12 ore, è di solito OK

Non c’è in realtà nessuna risposta giusta o sbagliata quando si tratta di TTL. Ma potete migliorare i tempi di risoluzione del DNS scegliendo un TTL che coincide con la frequenza delle modifiche apportate al sito.

Suggerimento 3 – Riducete il Numero di Domini (Hostname)

Il modo più semplice per ridurre le risoluzioni del DNS sul vostro sito è semplicemente quello di eliminare le richieste che interrogano diversi hostname. Ricordate, con le risoluzioni del DNS non non è una questione di numero di richieste, ma del numero dei diversi domini. Eseguite il vostro sito WordPress attraverso uno strumento come Pingdom e determinate se ogni richiesta è davvero necessaria. Dato che il DNS è una mappatura di un nome host su un IP, vi chiederete perché la gente non punta semplicemente su un IP? Questo perché un indirizzo IP può cambiare spesso, mentre gli hostname no.

Suggerimento 4 – Utilizzate Servizi Alternativi con DNS più Veloce

Anche se ridurre semplicemente il numero di domini (hostname) è più facile a dirsi che a farsi, consigliamo di guardare prima quelli con tempi di risoluzione del DNS più elevati. Ad esempio, nel sito che abbiamo testato qui sotto, possiamo facilmente notare che il tempo di risoluzione del DNS dello script di tracciamento Crazy Egg era molto più lungo degli altri. Ciò è dovuto molto probabilmente al fatto che il loro provider DNS non è veloce come altri.

Trovare lunghi tempi di ricerca DNS
Trovare lunghi tempi di ricerca DNS

Questo è uno scenario in cui forse si potrebbe guardare ad altri provider come Hotjar, che forniscono lo stesso servizio, ma forse stanno utilizzando un provider DNS più veloce. Può essere molto importante, quando si aggiungono servizi esterni al vostro sito WordPress, valutare le loro prestazioni.

Suggerimento 5 – Spostate l’Hosting delle Risorse su un CDN

Uno dei modi più semplici per ridurre le risoluzioni del DNS è quello di trasferire il maggior numero possibile di risorse al vostro provider CDN. Se fate girare il vostro sito su Pingdom, potete vedere il numero totale di richieste per dominio. Come potete vedere in questo esempio, il 93,8% delle richieste è indirizzato all’URL del CDN. C’è una richiesta all’host e una a Google Analytics. Spostando il maggior numero possibile di risorse sul CDN, si riduce il numero di risoluzioni del DNS, diminuendo così i tempi di caricamento.

Richieste per dominio
Richieste per dominio

Ora, naturalmente, non sarà sempre possibile spostare tutto sul vostro CDN. Ci saranno sempre alcune risorse o servizi esterni che richiedono di essere caricati dai loro server. Ma vi consigliamo di consultare il vostro sito. Molte volte, vediamo che gli utenti di WordPress hanno molte risorse non correttamente ospitate sul loro CDN. In questo modo, si può anche sfruttare meglio l’HTTP/2 e la parallelizzazione. Di seguito sono riportate alcune risorse che spesso potrebbero essere migliorate:

Font Awesome

Di tanto in tanto vediamo che gli sviluppatori di temi e plugin inseriscono Font Awesome nei siti WordPress, ma a volte li accodano in modo tale che, di default, un plugin come CDN enabler non lo intercetterà. In questo caso, consigliamo di contattare lo sviluppatore per chiedergli come caricarlo dal vostro CDN.

Un altro situazione comune con Font Awesome è che a volte viene caricato dal BootstrapCDN di default (MaxCDN). Anche se non c’è niente di sbagliato in questo, aggiunge un’altra risoluzione del DNS di cui non si ha bisogno. Sarebbe meglio, nella maggior parte dei casi, caricare Font Awesome dal proprio CDN, in modo che non ci sia un’altra risoluzione.

Gravatars

Se utilizzate i commenti nativi di WordPress, potreste avere un’ulteriore risoluzione su secure.gravatar.com per caricare i gravatar. Una soluzione semplice potrebbe essere quella di utilizzare il plugin per il lazy load dei commenti. Questo non elimina la risoluzione del DNS, ma la ritarda fino a quando l’utente non scorre la pagina. Quindi, in un certo senso, si sta riducendo la risoluzione del DNS al primo caricamento della. Date anche un’occhiata al nostro post sugli altri modi per velocizzare i commenti.

Google Fonts

Con Google Fonts avete una richiesta DNS in più per la risoluzione di fonts.googleapis.com al fine di prelevare il file CSS. Avete poi altre richieste verso fonts.gstatic.com per scaricare i file dei font. Quando ospitate localmente, tutte le richieste provengono dallo stesso dominio o CDN, e molto probabilmente non avrete bisogno di un altro file CSS in quanto sarà all’interno del file CSS del vostro tema WordPress. Questa soluzione presenta pro e contro, ma date un’occhiata al nostro articolo di approfondimento sull’hosting locale dei font.

Lookup del DNS di Google fonts
Lookup del DNS di Google fonts

Font Awesome, Gravatars e Google Fonts sono solo alcuni di esempi di come si possono ridurre le risoluzioni del DNS assicurando che siano caricate dal CDN. Siete sicuri che in questo momento state caricando tutto il possibile dal vostro CDN? È sempre bene dare un’occhiata.

Suggerimento 6 – Approfittate del Prefetching del DNS

Un altro suggerimento per velocizzare il DNS è quello di utilizzare il prefetching del DNS. Questo permette al browser di eseguire ricerche DNS su una pagina in background. È possibile farlo aggiungendo alcune righe di codice all’intestazione del sito WordPress. Ecco alcuni esempi.

<!-- 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">

Il prefetch del DNS è inoltre supportato da tutti i principali browser, ad eccezione di iOS Safari, Opera Mini e Android Browser.

Supporto dei browser del prefetch del DNS
Supporto dei browser del prefetch del DNS

Oppure, se utilizzate WordPress versione 4.6 o più recente, potreste utilizzare i suggerimenti per le risorse. Gli sviluppatori possono utilizzare il filtro wp_resource_hints per aggiungere domini e URL personalizzati per dns-prefetch, preconnect, prefetch o prerender.

Suggerimento 7 – Differite il Caricamento di JavaScript

Se differite il caricamento di JavaScript, potrete impedire il caricamento fino a quando il documento non è completamente caricato. Questo non ridurrà il numero di risoluzioni del DNS richieste, ma impedirà di chiamarle immediatamente, il che può generare un’esperienza utente più veloce. Varvy ha un’ottima spiegazione su come differire il caricamento di JavaScript. Un esempio che riporta sul suo sito è lo script di Google Analytics, dato che non c’è motivo che si carichi above-the-fold.

In WordPress, per differire il caricamento di JavaScript, è possibile utilizzare un plugin gratuito come Async JavaScript. Tuttavia, è importante sapere che molto probabilmente dovrete fare un elenco ed esaminare tutti gli script che vorrete escludere dal differimento. Perché? Perché alcuni JavaScript saranno necessari per il rendering above-the-fold. Async JavaScript è inoltre pienamente compatibile con il plugin Autoptimize.

Differire JavaScript in WordPress
Differire JavaScript in WordPress

E non perdetevi il nostro post approfondito su come eliminare il blocco del rendering di JavaScript e CSS.

Suggerimento 8 – Sfruttate il Flattening dei Record ANAME e CNAME

Ci sono record aggiuntivi da parte di provider come DNS Made Easy e Cloudflare che possono aiutarvi a ridurre il numero di richieste sul backend.

Record ANAME con DNS Made Easy

I record ANAME offrono la funzionalità di un record CNAME, ma a livello di root. Quindi, per esempio, diciamo che avete configurato un CNAME per www.domain.com. Il www deve prima risolvere al nome host e poi all’indirizzo IP. Questo richiede due richieste. Con un record ANAME, potete saltare una di queste richieste! Se la configurazione è corretta, queste possono essere utilizzate anche in combinazione con un CDN.

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

Tuttavia, non è sempre così. Se il nome host si trova nella stessa zona DNS, il record A potrebbe essere recuperato nella stessa richiesta.

Flattening del CNAME con Cloudflare

Analogamente ai record ANAME, Cloudflare fornisce ai propri clienti il flattening automatico del CNAME all’apice della zona (o root).

Riepilogo

Il DNS è spesso uno di quei fattori di performance che vengono trascurati, ma, se non si sta attenti, può facilmente contribuire a gran parte del tempo di caricamento complessivo. È importante capire come funziona il DNS, che ci sono provider più veloci e più lenti e come sia possibile ridurre le ricerche per velocizzare il sito.

Avete altri suggerimenti per velocizzare il DNS o ridurre le ricerche? Ci piacerebbe sentirne parlare qui sotto nei commenti!

Brian Jackson

Brian ha una grande passione per WordPress, lo usa da più di dieci anni e sviluppa anche un paio di plugin premium. Brian ama i blog, i film e le escursioni. Entra in contatto con Brian su Twitter.