Questo è il secondo di una serie di tre articoli che illustrano, passo passo, quali sono i punti fondamentali di una strategia SEO vincente, quali gli strumenti da adottare e come configurarli e utilizzarli, con l’obiettivo di posizionare, nel più breve tempo possibile, un sito web realizzato con WordPress nella prima pagina dei risultati di ricerca di Google e Bing. Ogni punto è illustrato con esempi pratici e una guida visuale alle configurazioni adottate.
Al termine di questa serie di articoli sarai in grado di gestire e migliorare il posizionamento del tuo sito web su Google e Bing.
Nel primo articolo abbiamo analizzato i principali fattori di ranking quali i contenuti, i link, la fruibilità su mobile e le parole chiave. Abbiamo anche visto come configurare nel dettaglio e al meglio il principale plugin SEO di WordPress, Yoast SEO.
In questo secondo articolo metteremo in luce l’importanza delle web performance, ossia la velocità di caricamento e di visualizzazione delle pagine web, come fattore di ranking. Anche in questo caso elencheremo i parametri fondamentali da tenere in considerazione e, per ognuno di essi, vedremo quali misure adottare e come.
Infine, nel terzo articolo, impareremo come registrare un sito web su Google e Bing e come configurare, voce per voce, i rispettivi tool, Google Search Console e Bing Webmaster Tools. Vedremo anche come migliorare il nostro posizionamento locale su Google utilizzando lo strumento Google My Business.
Vediamo dunque il secondo articolo.
Come misurarle
I tempi di caricamento pagina attualmente ritenuti accettabili sono di 2s su desktop e di 3s su dispositivi mobili (più lenti per via delle connessioni 3G ancora presenti). Per valutare questo parametro sono disponibili alcuni strumenti free
- PageSpeed Insights – di Google
- Test your mobile speed – di Google, dedicato ai dispositivi mobili
- Gtmetrix – utilizza sia PageSpeed Insights sia Yahoo! YSlow
- Pingdom Website Speed Test
- WebPagetest – permette di visualizzare e di confrontare tra loro le sequenze temporali di come le pagine vengono visualizzate nel tempo
- Visualizzazione “Network” dei developer tool dei browser (consigliati Chrome e Firefox, tasto F12 e poi tab Network).
Misurate la velocità di caricamento (valor medio su almeno 5 rilevazioni) e/o il punteggio ottenuto prima e dopo ogni modifica per valutarne l’effetto.
Caching – Plugin di caching

Impostazioni per WP Fastest Cache
Installate un plugin di caching in modo che ai visitatori vengano servite delle pagine statiche, riducendo quindi il tempo di processing lato server. Nel corso degli anni ne abbiamo provati tre, tutti gratuiti
- W3 Total Cache, permette di configurare tantissimi parametri ed è adatto per Utenti più esperti
- WP Super Cache, è meno complesso da configurare
- WP Fastest Cache, è il più semplice da configurare e permette (almeno nel nostro caso) di ottenere velocità di caricamento comparabili o migliori di quelle di WP Super Cache
Se prediligete la semplicità d’uso, potete utilizzare WP Fastest Cache che può essere configurato come riportato a lato
Caching – Caching del browser
Se viene impostata una data di scadenza o un’età massima nelle intestazioni HTTP per le risorse statiche, il browser carica le risorse precedentemente scaricate dal disco locale invece che dalla rete.
Se per il caching si utilizza W3 Total Cache, configurarlo come riportato nei seguenti due articoli alla voce “Leverage Browser Caching with W3 Total Cache”
Se per il caching si utilizza WP Fastest Cache (consigliato per semplicità d’uso), configurarlo come riportato di seguito

Impostazioni di WP Fastest Cache per browser caching
Caching – DNS Prefetching
Con il DNS Prefetching si richiede al browser di risolvere in anticipo il DNS dei domini esterni necessari, in modo da velocizzarne l’accesso al momento dell’uso effettivo.
A oggi, DNS Prefetching è supportato da tutti i browser ad eccezione di safari per iOS.
Per implementarlo su WordPress, il codice deve essere inserito in wp-content/themes/miotema/functions.php
. Un esempio di codice è riportato di seguito
/* Adding DNS Prefetching function dns_prefetch() { echo '<meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="//fonts.gstatic.com" /> <link rel="dns-prefetch" href="//www.google-analytics.com" /> <link rel="dns-prefetch" href="//fonts.googleapis.com" />'; } add_action('wp_head', 'dns_prefetch', 0);
Caching – Rimozione delle Query Strings
Spesso negli URL dei file CSS e JavaScript viene utilizzata una query string per specificare la versione del file, es. miosito.com/style.css?ver=4.6
.
Alcuni server di caching non sono in grado di mettere in cache i file che contengono una query string. Rimuovendo le query string si possono quindi prevenire problemi di caching.
Per far questo è disponibile il plugin Remove Query Strings From Static Resources. Basta installarlo, non necessita di configurazione.
Temi “snelli” e alberatura bilanciata
Utilizzo di temi ottimizzati ed eliminazione dei ritardi superflui
Spesso, per attirare l’attenzione e vendere maggiormente, i temi WordPress acquistati sui market sono ricchi di animazioni e di effetti. Prima di acquistare un tema, verificate i tempi di caricamento delle demo. Per quanto possibile, eliminate:
- animazioni
- ritardi voluti nella visualizzazione (es. elementi che appaiono in un secondo momento)
- contatori o loader grafici del tempo di attesa di caricamento della pagina
- slider animati, se non strettamente necessari (es. Slider Revolution)
Bilanciamento dell’alberatura del sito
Evitate di concentrare molti contenuti in una sola pagina che avrebbe quindi tempi di caricamento elevati, ma distribuiteli equamente tra le varie pagine.
Ad esempio, inserite il form contatti e la mappa con il vostro indirizzo in una pagina dedicata e non nella home page. Su di una linea ADSL, il download degli elementi del reCaptcha normalmente utilizzato per il form contatti e degli elementi delle mappe di Google richiede più di 1s. La creazione di una pagina dedicata per il form contatti e la mappa va inoltre a beneficio dell’esperienza Utente che può individuare immediatamente nella barra di navigazione o nel piè di pagina il link dei contatti.
Pochi plugin e caricati solo nelle pagine che li usano
Riducete al minimo il numero di plugin utilizzati e caricateli solo nelle pagine che li utilizzano. Quando possibile, invece di utilizzare un plugin, è preferibile modificare direttamente il codice dei file di WordPress (tipicamente functions.php
).
Per caricare i plugin solo nelle pagine che lo richiedono è disponibile un plugin Plugin Organizer.
Il caso tipico è quello di Contact Form 7 che viene utilizzato solo nella pagina Contatti. In questo caso, se non si vuole aggiungere Plugin Organizer, è possibile modificare direttamente il codice di wp-content/themes/miotema/functions.php
.
Con il DNS Prefetching si richiede al browser di risolvere in anticipo il DNS dei domini esterni necessari, in modo da velocizzarne l’accesso al momento dell’uso effettivo.
A oggi, DNS Prefetching è supportato da tutti i browser ad eccezione di safari per iOS.
Per implementarlo su WordPress, il codice deve essere inserito in wp-content/themes/miotema/functions.php
. Un esempio di codice è riportato di seguito
// De-queue Contact Form 7 CSS &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; JS from all pages except where contact form is visible add_action( 'wp_enqueue_scripts', 'custom_contact_script_conditional_loading' ); function custom_contact_script_conditional_loading(){ // Edit page IDs here if(! is_page(998) ) { wp_dequeue_script('contact-form-7'); // Dequeue JS Script file. wp_dequeue_style('contact-form-7'); // Dequeue CSS file. } }
dove ID è l’ID della pagina che ospita Contact Form 7.

URL con ID della pagina che ospita Contact Form 7
Riduzione del numero di font

Impostazioni pannello Google Fonts
Per personalizzare i siti su sistemi operativi differenti i temi utilizzano font specifici (es. Google Fonts). Ogni font weight è un font che deve essere scaricato. Google fornisce indicazioni circa il tempo di caricamento al variare del numero dei font weight. Limitate il numero a due al massimo, ad es. regular e bold.
Anche le icone sono font. Per quanto possibile utilizzate non più di una famiglia di icone (es. Font Awesome).
Disabilitazione pingbacks e trackbacks
Pingbacks e trackbacks sono funzionalità native di WordPress che inviano delle notifiche quando, in un altro sito, viene inserito un link al nostro sito. Possono rallentare il caricamento delle pagine e sono spesso fonte di spam per cui, attualmente, si tende a disabilitarli.
Impostazioni / Discussione

Impostazioni per disabilitazione pingbacks e trackbacks
Disabilitazione emoji
Il supporto agli emoji implica una richiesta HTTP dedicata e il download di un file .js. Se non utilizzati, è meglio disabilitarli.
Impostazioni / Scrittura

Impostazioni per disabilitazione emoji
Inserire inoltre il seguente codice in wp-content/themes/miotema/functions.php
.
/* Disable the emoji's */ function disable_emojis() { remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('admin_print_scripts', 'print_emoji_detection_script'); remove_action('wp_print_styles', 'print_emoji_styles'); remove_action('admin_print_styles', 'print_emoji_styles'); remove_filter('the_content_feed', 'wp_staticize_emoji'); remove_filter('comment_text_rss', 'wp_staticize_emoji'); remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); add_filter('tiny_mce_plugins', 'disable_emojis_tinymce'); } add_action('init', 'disable_emojis'); /* Filter function used to remove the tinymce emoji plugin. * * @param array $plugins * @return array Difference betwen the two arrays */ function disable_emojis_tinymce( $plugins ) { if ( is_array( $plugins ) ) { return array_diff( $plugins, array( 'wpemoji' ) ); } else {return array();} }
Ottimizzazione del database di WordPress
Limitate il numero di revisioni salvate in memoria, svuotate automaticamente il cestino dopo un certo numero di giorni e aumentate l’intervallo di autosave (è comunque sempre presente un solo autosave, il nuovo autosave sovrascrive il precedente).
Inserire il seguente codice in wp-config.php
appena prima del commento /* That's all, stop editing! Happy blogging. */
.
// Limit the number of posts revisions define('WP_POST_REVISIONS', 3); // Modify AutoSave Interval define('AUTOSAVE_INTERVAL', 300); // Seconds // Automatically purge trash define('EMPTY_TRASH_DAYS', 10 ); // Days
Ottimizzazioni PageSpeed Insights

Visualizzazione risultati analisi PageSpeed Insights
PageSpeed Insights (ma anche alcuni degli altri strumenti di analisi della velocità di caricamento pagina) fornisce un elenco di punti da migliorare e i suggerimenti per farlo.
Al termine dell’elenco, permette inoltre di scaricare un file .zip delle risorse (CSS, JavaScript e immagini) ottimizzate secondo i suoi criteri.
I punti da ottimizzare saranno analizzati di seguito.
JavaScript che ritardano la visualizzazione above-the-fold

Definizione di Above-the-fold
Above-the-fold è la parte superiore della pagina web visibile senza necessità di effettuare lo scrolling.
Il codice JavaScript presente nel <head>
deve essere scaricato ed eseguito immediatamente dal browser e questo blocca l’analisi e il rendering del codice HTML del <body>
e quindi la visualizzazione della pagina. Bisogna quindi
- spostare il codice Javascript in fondo al
<body>
- oppure differirne l’esecuzione
JavaScript che ritardano la visualizzazione above-the-fold – JavaScript in fondo al <body>
Si utilizza il plugin Scripts To Footer.
Se richiesto da altri plugin, permette di mantenere jQuery nel <head>
.
JavaScript che ritardano la visualizzazione above-the-fold – JavaScript differito
Si utilizzano le proprietà dell’attributo HTML5 defer.

async vs. defer
Si utilizza il plugin Async JavaScript configurato in modalità defer anche per jQuery.

Impostazione plugin Async JavaScript in modalità defer
JavaScript che ritardano la visualizzazione above-the-fold – in fondo al <body> vs. defer
Abbiamo provato entrambe le soluzioni
- Async JavaScript in modalità defer, il file JavaScript viene scaricato durante il parsing dell’HTML e immediatamente eseguito al termine del parsing, dovrebbe essere più veloce in quanto il download avviene in parallelo al parsing
- Scripts To Footer, il file JavaScript viene scaricato e poi eseguito solo al termine del parsing dell’HTML, dovrebbe essere più lento in quanto il download avviene solo al termine del parsing
Le prove non hanno mostrato differenze significative nei tempi di caricamento ma PageSpeed Insights premia Async JavaScript con 3 punti in più nella visualizzazione mobile.
L’attributo defer è attualmente supportato da tutti i browser.
ATTENZIONE: ogni browser implementa a modo suo l’attributo defer, quindi funzionamento e prestazioni vanno verificati su tutti i browser.
CSS che ritardano la visualizzazione above-the-fold
Analogamente a quanto visto nel punto precedente, il browser deve scaricare tutti i file CSS presenti nel <head>
prima di procedere con la visualizzazione della pagina. Per evitare questo ritardo, si spezza il file CSS in due
- la parte necessaria a visualizzare il contenuto above-the-fold, viene inserita come “internal style sheet” nel
<head>
- la parte necessaria a visualizzare il contenuto below-the-fold viene caricata successivamente in modo asincrono tramite uno script
La struttura HTML risultante è la seguente

Struttura HTML per “critical” e “non critical” CSS
Per l’implementazione, si rimanda ad un Meetup sulle Web performance che ha trattato in modo specifico l’argomento – 10° meetup Turin Web Performance: Critical CSS.
Ottimizzazione immagini
Caricate le immagini già nelle dimensioni con cui verranno visualizzate. Non caricate una immagine 1200 x 800px se poi nel layout della pagina si utilizzerà un 600 x 400px.
Utilizzate normalmente il formato .jpg. Utilizzate il formato .png solo nel caso in cui sia indispensabile la trasparenza o una qualità di immagine estremamente elevata (es. logo).
Se gestite tutte le immagini del sito e il sito ha poche immagini, caricatele già ottimizzate
- per Photoshop utilizzate lo strumento “Save for Web”
- TinyPNG, per .jpg e .png
- JPEGmini, solo per .jpg
- ImageOptim, per .jpg e .png
Dalle prove che abbiamo effettuato, TinyPNG offre la compressione maggiore.
Se le immagini sono già state caricate, sostituitele con quelle ottimizzate da Google PageSpeed Insights dopo averle scaricate dal link posto al termine dell’elenco dei punti da migliorare.
Se il sito ha molte immagini o se le immagini sono caricate da altri o dai visitatori (es. sito di annunci), utilizzate un plugin per la compressione delle immagini
- normalmente utilizziamo Compress JPEG & PNG images che è sviluppato dallo stesso team di TinyPNG
- in alternativa EWWW Image Optimizer che utilizza gli algoritmi di compressione di TinyPNG ma, a differenza di TinyPNG e degli altri plugin disponibili, effettua la compressione sul server del sito e non su server esterni
Rinominate le immagini coerentemente con il contenuto visivo e inserite sempre il testo alternativo (attributo alt) per essere trovati anche tramite Google immagini (unica eccezione, le immagini cosiddette “decorative” in cui il testo alternativo deve essere nullo per non disorientare chi utilizza gli screen reader).

Inserimento attributo alt
Priorità ai contenuti visibili

Impostazioni per BJ Lazy Load
Per ridurre i tempi di caricamento pagina, è possibile scaricare solo le immagini che devono essere visualizzate nella finestra del browser.
Le altre immagini verranno scaricate successivamente quando, scrollando, si avvicineranno alla finestra del browser.
Si utilizza il plugin BJ Lazy Load configurato come a lato.
N.B.
Se utilizzate il plugin Contact Form 7 con il reCaptcha, è importante spuntare “No” in corrispondenza di “Carica gli iframe solo quando necessario”, altrimenti, sotto il reCaptcha di Contact Form 7 si forma una textarea “recaptcha response” spuria.
Compressione file con gzip
Per ridurre i tempi di scaricamento, il server comprime i file con gzip e li invia al browser che li decomprime. Se si usa un hosting, normalmente la compressione gzip è già attiva.
Utilizza questo tool per verificare se i file del tuo sito web vengono inviati compressi con gzip.
Se gzip non è presente, conviene contattare il proprio fornitore di hosting.
Minificazione file
Minificazione JavaScript e CSS
Il processo di minificazione permette di ridurre le dimensioni dei file eliminando i caratteri superflui ai fini dell’interpretazione dei file stesso come spazi, interruzioni di riga, commenti.
Normalmente i file .js e .css dei temi sono già minificati. Nel caso non lo fossero, potete sostituirli con quelli minificati da PageSpeed Insights scaricabili dal link posto al termine dell’elenco dei punti da migliorare.
In alternativa, è possibile utilizzare le opzioni di minificazione dei plugin di caching W3 Total Cache o WP Fastest Cache. WP Super Cache non ha una opzione di minificazione.
Minificazione HTML
Per minimizzare i file HTML (caso raro in quanto nella maggior parte dei casi i file sono .php) è possibile utilizzare le opzioni di minificazione dei plugin di caching W3 Total Cache o WP Fastest Cache.
HTTPS invece di HTTP
Dal 2014 Google considera l’utilizzo del protocollo HTTPS tramite un certificato SSL un fattore di ranking.
Sia Chrome sia Firefox etichettano i siti non su HTTPS come “Non sicuri” (che per un visitatore non è bello a vedersi).
Alert di connessione non sicura – Chrome
Alert di connessione non sicura – Firefox
Tutti i browser supportano HTTP/2 (maggiore velocità di caricamento delle pagine) solo su connessioni HTTPS.
Il protocollo HTTPS garantisce maggior sicurezza
- cifratura dei dati scambiati, i dati non possono essere intercettati
- integrità de dati scambiati, i dati non possono essere modificati
- autenticazione del sito, garantisce gli utenti che il sito corrisponde al dominio digitato, infondendo fiducia
Il costo di un certificato SSL acquistato è basso (< 10 € anno).
Sono disponibili certificati SSL gratuiti, di facile installazione, ormai offerti dalla maggior parte degli hosting provider, garantiti da un Consorzio Let’s Encrypt (Mozilla, Akamai, Cisco, OVH, Chrome, Facebook, Automattic, SiteGround, …) .
RACCOMANDAZIONE: migrate il vostro sito da HTTP ad HTTPS.
L’articolo ti è stato utile? Lascia un commento o condividilo utilizzando i pulsanti social riportati di seguito.
Puoi anche scaricare la versione pdf del post.
Se hai dubbi o vuoi proporre un’idea, siamo a tua disposizione.