I Gravatar rallentano il tuo blog? Sì. Ecco cosa fare…

I Gravatar rallentano il tuo blog? Sì. Ecco cosa fare...

Da quando Matt Cuts ha annunciato che la velocità di un sito web viene utilizzata come uno dei 200+ fattori oer il posizionamento, la parola d’ordine è: velocizzare il proprio blog.

Analizzando le mie statistiche ho notato una cosa, gli articoli che hanno ricevuto un sacco di commenti (100+) stanno piano piano perdendo le posizioni in SERP, nonostante siano validi per l’utente. Quale potrebbe essere il problema?

Analizzando queste pagine con il Google Webmaster Tools, ho notato una cosa sconvolgente: il tempo di download (del Googlebot) si aggira attorno ai 3 secondi (normalmente dovrebbe stare sui 400-700 ms). Beh, il problema potrebbe essere proprio questo!

Analizzo la pagina con Pingdom Tools e cosa noto?

200+ richieste, 100+ delle quali sono immagini. E che cavolo è successo al mio blog??? 😯

risultato iniziale

Il problema

Guardando gli URL di queste 100+ immagini ho capito dove si “nascondeva” il problema: i gravatar.

Il gravatar è l’avatar universale che si utilizza sul web e che viene associato ad una email. Quando lasci un commento da qualsiasi parte (praticamente chiunque utilizza gravatar) utilizzando quella email, viene mostrato il relativo avatar, solitamente la tua bella faccina. Ecco come puoi impostare il tuo gravatar.

Di default è attivo su ogni installazione di WordPress, come puoi vedere dal Pannello di amministrazione > Impostazioni > Discussione:

Discussione WP

Cosa accade nella pratica?

Per ogni commento che viene lasciato sul blog, all’apertura dell’articolo viene generato una richiesta al sito gravatar per ogni singolo commento, per controllare se alla mail associata al commento corrisponde un avatar oppure no. In caso positivo viene mostrato l’avatar, in caso negativo viene mostrato l’avatar di default che hai impostato sul tuo blog, il famoso Mystery Man (ma è possibile usarne uno personalizzato).

Il secondo problema è che questi avatar hanno tutti indirizzi diversi (anche se i commenti sono dello stesso autore), quindi vengono caricati 100+ avatar differenti e non viene usato nessun sistema di cache.

gravatar request

Che spreco di risorse!

Soluzione – Passo 1

Siccome sono l’unico autore di questo blog, quasi la metà dei commenti sono miei. Che senso ha chiedere ogni volta a Gravatar se alla mia email è associato un avatar? Certo che è associato qualcosa!

Così ho modificato un po’ il codice e quando il nome utente (ma si può fare benissimo con ID utente) dell’autore del commento è uguale ad uno desiderato, mostra direttamente un’immagine che ho salvato sul mio server. In questo modo viene richiesta e caricata una sola immagine per tutti i miei10-20-50+ commenti, un notevole risparmio di risorse.

Questo è  il codice:

[php]
if (!strcmp($comment->comment_author, "NOME AUTORE"))
echo "<img class=’avatar’ alt=’NOME AUTORE’ src=’URL IMMAGINE’ width=’64’ height=’64’ />";
else
echo get_avatar($comment,$size=’64’);
[/php]

Dove inserirlo? Dove trovi il codice che inizia con get_avatar($comment … nel mio caso è in functions.php, leggi questo articolo che ti potrebbe aiutare.

risultato intermedio

Come puoi vedere il numero di richieste è sceso da 203 a 176, il Load time (tempo di caricamento) da 3.79 a 1.99 secondi, non male.

Soluzione – Passo 2

Ma tutto ciò non mi basta, la pagina è ancora troppo appesantita, troppe richieste. A questo punto decido di implementare il lazy loading per le immagini grazie al plugin Lazy loading. Basta installarlo e funziona immediatamente in automatico.

Cosa fa? In poche parole carica le immagini appena l’utente scorre la pagina fino al punto in cui si trovano, così da caricarle solamente se necessario. Questa è un’ottimizzazione consigliata sempre, non solo per i Gravatar.

Il risultato di 30 secondi di fatica?

risultato finale

Il numero di richieste passa da 176 a 86, mentre il tempo di caricamento da 1.99 a 1.37… che ne dici?

Rispetto alla situazione iniziale, il numero di richieste passa da 203 a 86, il tempo di caricamento da 3.79 a 1.37… Un guadagno del 63%!

Ora il Googlebot scarica la pagina in circa 1.5 secondi, valore che rimane comunque elevato, ma è causato probabilmente dalla quantità di contenuto di cui è composta la pagina (il codice HTML generato per mostrare i 100+ commenti è davvero tanto).

Qualche lieve miglioramento anche per il posizionamento, per ora niente di così significante, staremo a vedere fra qualche settimana.

Soluzione – Drastica

Disabilitare gli avatar.

Certo graficamente non è molto elegante, ma se stai guardando solamente la velocità, beh, è la soluzione ottimale.

Come fare a disabilitarli? Semplicemente togliendo la spunta dalla casella “Mostra avatar” in Impostazioni > Discussione.

VUOI CREARE IL TUO SITO O BLOG WORDPRESS?

Scegli uno tra i migliori hosting per WordPress

HOSTING

Scegli uno tra i migliori hosting per WordPress

Hosting

Scegli uno tra i migliori temi WordPress professionali

GRAFICA

Scegli uno tra i migliori temi WordPress professionali

Grafica

Guide e risorse per gestire il sito WordPress a 360°

GESTIONE

Guide e risorse per gestire il sito WordPress a 360°

Gestione
  
con le dita sempre in costante, frenetico movimento sulla tastiera… vengo spesso trascinato e catturato “in rete” per colpa delle mille idee che mi girano per la testa (prima o poi troverò quella giusta)… dal futuro incerto (nonostante una laurea, e chi non lo è?..siamo in tanti!) .. credo fortemente nella condivisione della conoscenza!
10 Commenti
  • ciao Roberto!

    approfittando del tuo ultimo articolo sulla velocità del sito, ho provato ad installare Lazy load, ma mi da dei problemi nella visualizzazione delle immagini nella slideshow ed in quelle più grandi che rappresentano gli ultimi articoli pubblicati nelle diverse categorie.
    Se attivo il plugin mi scompaiono proprio le foto!

    Cosa mi consigli di fare?

    Grazie

    • Roberto Iacono

      Potresti disabilitare il plugin, ed inserire il codice per il lazy load (un semplice file JS) adattando il codice per farlo funzionare solamente con i gravatar (oppure modifichi il codice del plugin, a te la scelta).
      Purtroppo, attualmente il plugin non prevede la possibilità di scegliere quali immagini caricare con il lazy load…

  • Stavo cercando anche io una soluzione di questo tipo, ho notato che DISQUS rallenta in maniera clamorosa il caricamento sia con mobile che in pagine con troppi commenti… Ho una pagina dove ci sono 45 commenti di grazie e da buon bloggger ho scritto Grazie a te per aver lasciato un commento.. Risultato.. Alla Homer…DHO!!!! Forse la soluzione ideale e quella di appoggiarsi a Facebook hanno mega server che rispondono immediatamente.. Che ne pensi? Ho troppi plugin installati volevo evitare…
    Cmq bravo e grazie per le tue chicche di WP!!!!

    • Roberto Iacono

      Ciao Rocco,
      anche Gravatar è davvero molto performante, velocissimo. Controlla con pingdom. Il problema è che genera un sacco di richieste e il tempo di caricamento, varia da hosting a hosting.
      Il reale problema è ridurre il numero di queste richieste (almeno al caricamento della pagina), quindi il lazy load potrebbe essere una soluzione interessante (anche perchè migliora anche tutto il resto).

      Ti ringrazio 🙂

  • Salve !
    Volevo segnalare uno script in javascript (http://www.appelsiini.net/projects/lazyload).
    Tutto il procedimento è spigato qui: http://francescogavello.it/come-ritardare-il-caricamento-delle-immagini-con-lazy-load-jquery

  • Niente da fare Roberto! In alcune pagine non mi carica le immagini in altre solo quelle iniziali.. sarà colpa del mio tema… Bho meglio evitare… Troverò prima o poi una soluzione anche perchè google in ad sense mi dice che le mie pagine che portano più guadagni sono lente che ansia! 😉
    Ciao!

  • Interessante questo Lazy Loading. Ma per quanto rigarda i commenti perché non adotti un paginazione in modo da non doverli mostrare tutti è 100?

    • Roberto Iacono

      Ho pensato questa soluzione, ma dai miei test (in locale), non mi pare che vengano indicizzate tutte le pagine dei commenti (quindi potrei ricevere meno traffico). Purtroppo è una mia supposizione, non ho trovato nulla in rete al riguardo. Sarebbe fare un test al riguardo 🙂 Se hai qualcosa di interessante da linkare, fai pure!