Come capire quali plugin rallentano WordPress con P3 e cosa fare dopo

Come capire quali plugin rallentano WordPress con P3 e cosa fare dopo

Hai un blog WordPress lento e non capisci come mai? Magari dai la colpa all’hosting quando invece il tuo è uno tra i migliori hosting per WordPress? Ma se prima andava tutto bene, cosa è cambiato ora?

Il numero plugin installati!

Troppi plugin, soprattutto se hanno un codice non ottimizzato, possono rallentare il tempo di caricamento di WordPress, anche in maniera considerevole! E visto che la velocità di caricamento di un sito è importante, devi limitare questo problema! Ma come fare a capire quali sono quelli che effettivamente vanno ad impattare sul tempo di caricamento?

Basta utilizzare il plugin P3 (Plugin Performance Profiler) realizzato da GoDaddy.

P3 (Plugin Performance Profiler)

Questo plugin è davvero favoloso, tramite l’auto-scan simula X visite provenienti dal tuo indirizzo IP e analizza N pagine del blog, dalla home, agli articoli, alle categorie, ma anche la bacheca, la pagina plugin e il backend in generale, così da testare l’impatto effettivo che hanno i plugin rispetto al tempo di caricamento di ciascuna pagina analizzata.

È possibile personalizzare  le pagine da analizzare, così da poter paragonare i risultati ottenuti, sfruttando questa funzione (da aggiungere nel file functions.php del tema):

[php]
function my_p3_auto_scan_pages() {
return array(
‘http://example.com/’,
‘http://example.com/some-cool-post’,
‘http://example.com/wp-admin/edit.php’,
);
}
add_filter( ‘p3_automatic_scan_urls’, ‘my_p3_auto_scan_pages’ );
[/php]

L’importante è disattivare i plugin di cache, come W3 Total Cache, prima di iniziare il test.

I tuoi dati

Non voglio annoiarti ulteriormente, per cui passiamo subito alla pratica.

Una volta installato il plugin, vai su Strumenti > P3 Plugin Profiler e premi il pulsante Start Scan. Dopo circa un minuto, in cui il plugin eseguirà le analisi, clicca sul pulsante View Results e vedrai finalmente quale plugin rallenta consistentemente il tuo blog. Come? Sotto forma di una bella torta a spicchi, immediata e pratica!

Peso iniziale

Andando con il mouse sopra ogni spicchio, vedrai esattamente il nome del plugin, l’impatto in percentuale tra tutti i plugin attivi ed il tempo impiegato a caricare il codice del plugin stesso.

Dalla mia analisi risulta che ho installato 21 plugin (secondo me un buon risultato è averne attorno ai 15), che impiegano 0.711 secondi a caricare tutto il loro codice, con un impatto sul tempo di caricamento del 63.4% (percentuale troppa elevata!) e un numero di query al database pari a 84 (troppe, pensa che con solo WP si hanno circa 30 query).

Situazione migliorabile, sicuramente!

Oltre a questa prima carrellata di informazioni, P3 mette a disposizione altri dati interessanti.

Nella sezione Simple Timeline, viene mostrato il grafico del tempo speso nelle varie pagine analizzate per: il core di WordPress (solo il codice di WP), il tema e i plugin.

Grafico del tempo speso

Risulta evidente che i plugin rallentano complessivamente il caricamento del blog. Guarda come sarebbe veloce se non installassi nessun plugin!

Nella sezione Advanced Metrics vengono mostrati nel dettaglio i tempi di caricamento e altre informazioni interessanti.

Dati avanzati

Ecco alcuni valori medi che dovresti analizzare per bene:

  • Site Load Time: tempo “reale” di caricamento del blog (comprende anche il tempo dei plugin), da quando viene fatta la richiesta a quando viene consegnata al browser l’intera pagina web senza contare dell’overhead introdotto da P3 (secondo me non è realistica se comparata con i servizi online come Pingdom Tools e GTmetrix)
  • Plugin Load Time: tempo impiegato a caricare il codice dei plugin
  • Theme Load Time: tempo impiegato a caricare il codice del tema
  • Number of PHP ticks: numero di dichiarazioni php e chiamate a funzioni php
  • Memory Usage: memoria RAM utilizzata
  • MySQL Queries: numero di query effettuate al database

Per tutti questi valori, più bassi sono, meglio è!

Come accennato, il tempo di caricamento del sito non rispecchia quello misurato con Pingdom, che è invece di 3.67 sec:

velocità prima

Nota che tutti i valori che ti ho mostrato sono sempre soggetti ad errore, quindi non prendere i risultati come corretti al 100%.

Analisi e possibili soluzioni

È arrivato il momento più bello ed interessante, quello di analizzare i risultati ottenuti 🙂 L’approccio che utilizzo solitamente è quello di partire dall’alto per poi scendere (approccio top-down), ovvero da chi ha un maggior impatto a chi è quasi irrilevante.

Partendo dal primo grafico (a torta) ho notato che il maggior impatto lo hanno i seguenti plugin:

  • 17% Other (tutti i plugin che non sono presenti nella lista)
  • 15% Pretty Link Lite
  • 11% Special Recent Posts Free Edition
  • 10% WordPress SEO
  • 9% SyntaxHighlighter Evolved
  • 7% Smart Archives Reloaded
  • 7% WordPress Database Backup
  • 6% Simply Exclude

Pretty Link Lite è il plugin che utilizzo per accorciare gli URL e dare un aspetto migliore agli URL delle affiliazioni. Per me è fondamentale, quindi non posso eliminarlo. Posso sostituirlo con un altro simile? Beh, dovrei riuscire ad importare nell’atro plugin tutti i link e non ho voglia 🙂 Quindi?

Quindi ho pensato bene che era giunto il momento di aggiornare il plugin (perchè c’era un aggiornamento disponibile) e con mia grande sorpresa:

Peso Pretty Link

Come puoi vedere, grazie all’aggiornamento (ho letto che sono state ottimizzate le richieste al Database) il tempo di caricamento del plugin è passato da 0.1043 a 0.0691 secondi, con un miglioramento di 0.0352 secondi. Vedi che è importante aggiornare plugin e WordPress?!? 🙂

Special Recent Posts, che ha un impatto del 11%, lo utilizzo per mostrare gli ultimi 5 articoli con l’immagine di anteprima. Ne posso fare a meno? Sì. Ho così creato a mano il codice per ottenere lo stesso risultato, riducendo notevolmente il codice da caricare.

WordPress SEO è l’ottimo plugin che utilizzo per la SEO di questo blog, non posso farne a meno perchè è il migliore nel suo campo.

SyntaxHighlighter Evolved che ha un impatto del 9%, mi serve per mostrare il codice che ogni tanto fornisco all’interno degli articoli. Posso farne a meno? No. Posso sostituirlo? Sì.
Ho fatto diversi test, ed ho trovato in Syntax Highlighter Compress una buona alternativa, ottimizzato e molto più veloce (nonchè più pratico). Piccolo problema: dovrei modificare il codice di tutti i codici che ho già inserito negli articoli, oppure modificare il codice del plugin (soluzione più veloce), ma mi ci vuole parecchio tempo per analizzare il codice del plugin.
Morale della favola? Al momento lo lascio ancora attivo.

Smart Archives Reloaded è il plugin che utilizzo per creare la pagina archivio, dove mostro tutti gli articoli che ho pubblicato qui. Ha senso avere un plugin per una sola pagina? In questo caso no, infatti l’ho sostituito con del codice, come ho descritto nell’articolo Creare una pagina archivio senza plugin.

WordPress Database Backup è il plugin che utilizzo per creare il backup automatico del mio database. Solitamente, i plugin che fanno qualcosa di programmato (in questo caso il backup) possono rallentare maggiormente il caricamento del blog. Probabilmente questo plugin non è ottimizzato, così mi rallenta notevolmente il caricamento. Ho deciso di eliminarlo e di sfruttare il backup automatico che mi fornisce il mio hosting. Puoi anche utilizzare il plugin WP-DBManager.

Simply Exclude è il plugin che utilizzo per non mostrare alcuni articoli nel blog. L’ho rimosso ed ho modificato manualmente le query che mostrano gli articoli in homepage, escludendo particolari categorie.

Insomma, ho continuato l’analisi per tutti gli altri plugin ponendomi sempre le tre domande:

  • È fondamentale?
  • Posso sostituirlo con del codice scritto a mano?
  • Posso sostituirlo con un altro plugin (migliore)?

Se la risposta è no, passo alla domanda successiva, fino a che non finiscono. Se al termine la risposta è ancora no, lascio il plugin lì dov’è.

Dati dopo le modifiche

Ecco i dati che ho estratto dopo aver ottimizzato (a grandi linee) il blog:

dopo l'ottimizzazione

grafico dopo l'ottimizzazione

Il numero di plugin installati è passato da 21 a 16 (ho fatto una bella pulizia :)). Il tempo di caricamento dei plugin da 0.711 secondi è sceso a 0.453 secondi. L’impatto dei plugin è passato da 63.4% al 40.9% con 6 query richieste al database in meno.

Metriche avanzate dopo l'ottimizzazione

Il tempo di caricamento del sito è passato da 1.12 a 1.10 (non è ciò che mi aspettavo, pensavo in una diminuzione maggiore). Il tempo di caricamento del tema è diminuito ma senza che io abbia modificato qualcosa, mentre è aumentato il tempo di core di WP, che in teoria dovrebbe rimanere sempre uguale. Da questo si capisce che P3 non è proprio affidabile al 100% (ovviamente), ma bisogna utilizzarlo per trovare chi rallenta il blog a grandi linee, senza fossilizzarsi sui millisecondi.

L’utilizzo della memoria RAM è sceso, da 46.65 MB a 39.74 MB, circa il 15% in meno, così come il numero di query che sono passate da 84 a 78.

Così a prima vista il tempo di caricamento totale è diminuito di poco, ma ti assicuro che nella realtà è diminuito moltissimo! Anche il backend (il pannello di amministrazione) risponde in maniera molto più veloce.

Penso che il plugin P3 non mostri il reale tempo di caricamento, per cui ho effettuato dei test anche con il servizio di pingdom tools.

velocità dopo

Anche questo servizio è molto variabile, per cui i dati vanno presi con leggerezza. In ogni caso, rispetto all’inizio, il tempo di caricamento è diminuito da 3.67 sec a 3.40 sec, circa l’8%. Il numero di richieste è diminuito, passando da 77 a 60, mentre è aumentata la dimensione della pagina, da 1.6 a 2 MB (non mi spiego il perchè). Infine il giudizio di Pingdom è aumentato, da 85 a 89.

I risultati mostrano che guadagno pochi decimi nel tempo di caricamento, ma, come ho già detto, nella realtà il blog risulta molto più performante, anche nel backend.

Il mio consiglio finale è di non essere ossessionati dai risultati prodotti con P3, in quanto non lo ritengo preciso, piuttosto di utilizzarlo per avere un’idea generale di quale plugin stia rallentando il tuo blog… ah, dimenticavo, ovviamente mantieni solamente i plugin indispensabili per te!

Per chiudere, cosa ne pensi se disattivassi i plugin nelle pagine in cui non servono? Interessante vero? Magari, settimana prossima… … … 🙂

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!
22 Commenti
  • “Special Recent Posts, che ha un impatto del 11%, lo utilizzo per mostrare gli ultimi 5 articoli con l’immagine di anteprima. Ne posso fare a meno? Sì. Ho così creato a mano il codice per ottenere lo stesso risultato, riducendo notevolmente il codice da caricare.”

    Un piccolo articolo?

    • Roberto Iacono

      Certamente, è in laboratorio 🙂

      L’ho finito, ecco qui: Mostrare gli articoli recenti con l’anteprima senza plugin.

      • L’ho provato….il 50% del rallentamento è fatto da No category parents….come faccio ad eliminarlo senza perdere i vantaggi SEO?
        Help me!

        • Roberto Iacono

          WordPress SEO ha questa funzione integrata,
          in alternativa, aggiungi questo codice al file .htaccess (fai una copia di backup prima):

          RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

          • Ho All in SEO, quindi devo fare le prove con .htaccess

          • ok, pare che non ci sia nessuna anomalia….mi chiedo come faccio a verificare che sia tutto ok? devo aspettare la prossima pubblicazione di post e verificare?

          • Roberto Iacono

            Prova ad andare a vedere una categoria… in ogni caso, non ci dovrebbero essere problemi.

  • Ottimo, alcuni risultati:
    DA —————————
    Total Plugins: 24 (currently active)
    Plugin Load Time 0.546 (sec. per visit)
    Plugin Impact 59.9% (of page load time)
    MySQL Queries 152 per visit
    A ——————————
    Total Plugins: 22 (currently active)
    Plugin Load Time 0.386 (sec. per visit)
    Plugin Impact 53.3% (of page load time)
    MySQL Queries 130 per visit

    Thank you..

  • e invece no automotivespace.it/eng/category/auto/

    mentre questa è la riga che ho inserito
    RewriteRule ^category/(.+)$ http://www.automotivespace.it/eng/$1 [R=301,L]

    Forse che la devo mettere alla fine o all’inizio?…oppure devo solo modifiare il file htaccess in .it e non solo in .it/eng?

    • Roberto Iacono

      Ti confermo che dovrebbe funzionare così. Mettilo pure nel .htaccess in .it/eng . Se non dovesse andare, prova a svuotare la cache plugin+browser (anche se non dovrebbe cambiare niente) e infine, prova ad inserirlo nel .htaccess del .it

      • FUNZIONA!
        Il codice che mi hai segnalato fa la sua funzione, ma SOLO se lo metto come prima istruzione in .htaccess.
        GRAZIE
        Ora i miei dati sono

        Total Plugins:
        34

        Plugin Load Time
        0.847

        Plugin Impact
        68.5%

        MySQL Queries
        86

        Lo so è ancora molto, ma piano piano sto cercando di eliminare quanto più è possibile con le tue guide….;)

  • Ciao Roberto, io us WordPress database Backup, ma i miei backup li faccio manualmente, cosi quando non mi serve, disattivo il plugin.
    La mia domanda è, ma se il plugin è disattivato, questo incide lo stesso nella velocità, o dal momento che è disattivato non incide più sulla velocità di caricamento della pagina?
    Grazie!

    • Roberto Iacono

      Non incide sulla velocità perchè non viene caricato nulla 🙂 Però ogni plugin potrebbe essere una porta d’accesso per i malintenzionati (è un po’ estrema come cosa, ma è così)

  • Davvero illuminante, il plugin per plugin…ottimo! Ho capito chi mi faceva perdere più tempo. Grazie infinite

  • il plug in più che rallenta tutto è traslate. mi rallenta dell’80%. ma è indispensabile. come faccio?

    • Roberto Iacono

      A cosa ti serve? Lo devi sapere te se è indispensabile per il tuo blog 🙂 Pensaci su e poi decidi…

  • Ho un ristorante e un albergo quindi mi serve il multilingue, ho chiesto consiglio a un amico esperto e mi ha linkato il tuo articolo su qtraslate.
    Devo dire che in un sito complesso come il mio è molto utile perche non mi obbliga a tradurre tutto (certe cose come la scuola di cucina o come articoli e commenti) sono piu utili solo agli Italiani. Da parte mia risparmio tempo. Sto leggendo tutti i tuoi articoli piano, piano tempo permettendo trovandoli molto utili. Ma quando ho visto i risultati di qtraslate +4 secondi e un ritardo dell’80% sul resto ci sono rimasto male. Anche perchè come puoi ben immaginare essendo un ristorante è fatto più da immagini che da testi, e le immagini devono essere belle e grandi. Ho istallato anche, seguendo i tuoi consigli: All In One SEO Pack, W3 Total Cache, WP Smush.it. accorciando di molto i tempi di reazione. Grazie comunque per il tuo lavoro, in genere tranne qualche problemuccio avuto per colpa di register.it che è un po strano, le tue indicazioni sono precise anche per chi fa solo il cuoco.

  • Quando clicco sul START SCAN non succede niente 🙁

    come mai?

    • Roberto Iacono

      Non saprei, prova a chiedere all’assistenza del plugin… magari hai javascript o qualcosa del genere disattivato