Come ho velocizzato WordPress di oltre il 100%

Nei giorni scorsi ho deciso di lavorare un po’ per migliorare i tempi di caricamento di WordPressMania ormai diventati biblici.

La situazione iniziale era davvero disperata: il completo caricamento della home richiedeva tra i 12 e i 20 secondi e la pagina cominciava ad apparire tra gli 8 e i 12 secondi…

Ebbene sono riuscito ad ottere tempi di caricamento di circa 4 secondi con il rendering della pagina (così il visitatore può iniziare a leggere) che inizia già al 1° secondo.

Vi racconto come ho fatto, perchè si tratta di accorgimenti che ognuno può mettere in pratica, ma tenete presente che ogni caso è a sè, e bisogna sperimentare, sperimentare, sperimentare…

Con WebPageTest.org ho cercato di individuare i “colli di bottiglia” che rallentavano il tutto.
Il bello di questo tool è che non solo ti offre una specie di “GANTT” del caricamento della pagina, ma presenta poi una “optimization checklist” da seguire per migliorare le prestazioni del sito.

Poichè WordPressMania è ospitato su un server condiviso, le possibilità di intervento sono pressochè limitate a WordPress in sè, visto che non posso modificare nè le configurazioni di Apache nè quelle di MySQL.

Fase 1: Ho fatto un po’ di pulizia nel tema e tra i plugin.

Ho eliminato alcune “chiamate” a immagini non più presenti sul server: tutte queste generavano degli errori 404 ma solo dopo alcuni secondi di attesa.

Ho ridotto i CSS caricati dai vari plugin elimandone alcuni non più utili (uno per mostrare video presenti sul mio server e uno per i video di YouTube: ora ci pensa direttamente WordPress).

Insieme ad alcuni altre limature del genere al termine della prima fase il tempo di caricamento si è ridotto di circa 2 secondi.

Fase 2: Ho installato WP Super Cache

Ebbene sì: è un plugin che non avevo ancora installato, anche se lo uso con soddisfazione su altri blog e siti.

Ho penato un po’ per farlo funzionare a dovere e ad ottimizzare le varie opzioni ma il risultato è stato più che soddisfacente: dai 20 secondi iniziali sono passato a 6/8 secondi di caricamento, abbattendo il tempo per avere il “primo byte” (diciamo il tempo di risposta iniziale del server) da ben 4 secondi a 0,3/0,4 sec. Evidentemente il tempo per eseguire le query sul database era significativo, e servire pagine cached è una ottima soluzione.

Fase 3: Ho installato WP Widget Cache

Entusiasmato dal buon risultato della cache ho pensato di proseguire su quella strada installando anche Wp Widget Cache (plugin di cui ho parlato in un altro post).

L’attivazione è istantanea, mentre richiede un po’ più di tempo la configurazione: bisogna andare widget per widget per impostare i vari parametri: comunque cosa da 5 minuti, non di più.

Conclusioni:

L’attivazione di questo plugin ha abbassato ulteriormente i tempi di risposta (tra parentesi i dati di partenza):

  • Completamento della pagina: 3 / 4,3 sec  (19 / 12 sec)
  • Primo byte al browser: 0,3 / 0,4 sec (4,3 / 5 sec)
  • Inizio rendering nel browser: 0,9 / 1,2 sec (8 / 12 sec)

Arrivato a questi risultati ho deciso di fermarmi e di monitorare un po’ la situazione per qualche settimana.

Si potrebbero fare altri interventi, ma questi erano i più indolore e mi hanno permesso di non sacrificare nulla dell’installazione esistente pur ottenendo un ottimo miglioramento, che ne dite?

Cosa mi consigliate di fare ancora?

27 commenti:

  1. mitico! provo subito webpagetest e installo wp super cache.
    la cosa migliore è usare strumenti come webpagetest e verificare appunto dove si bloccano i caricamenti. una volta per un feed di un sito esterno che non si caricava sono arrivata a 22 secondi di caricamento e stavo impazzendo per capire di chi fosse la colpa.
    grazie!

  2. complimenti, un ottimo risultato, ho provato già due volte l’istallazione di WP Super Cache senza riuscire in una configurazione del plugin soddisfacente, al punto da rinunciarci.
    Ma è un limite mio, qualcosa che sbaglato nelle impostazioni e spero di trovare il tempo utile per ritentare…

  3. @Nicola: no, non fortunato… piuttosto bravo!
    Io davvero non mi ero mai occupato della velocità di caricamento di WPMania…e quindi ho accumulato “sporcizia” varia che merita attenzione…

    Stef.

  4. Bellissimo post! Veramente utile. Ero indeciso se utilizzare o meno quei due Plugin e posso dirti che mi hai convinto. Anche perchè, detto tra noi, i risultati ottenuti da quel test non sono ahime proprio confortanti :-(.
    Grazie ancora

  5. quando dici

    Ho ridotto i CSS caricati dai vari plugin elimandone alcuni non più utili (uno per mostrare video presenti sul mio server e uno per i video di YouTube: ora ci pensa direttamente WordPress).

    cosa intendi??? io con wp-super-cache non riesco proprio… 🙁 disattivandolo ottengo velocità migliori, devo capire dove sbaglio… c’è una guida al riguardo???

  6. ciao… senti, ma per

    Ho ridotto i CSS caricati dai vari plugin elimandone alcuni non più utili (uno per mostrare video presenti sul mio server e uno per i video di YouTube: ora ci pensa direttamente WordPress).

    cosa intendi???

    in più sapresti indicare una guida per wp-super-cache visto che, almeno nel mio caso, una cattiva configurazione significa pessime prestazioni???

    😉 thanks per le info che hai già dato

  7. Ho ridotto i CSS caricati dai vari plugin elimandone alcuni non più utili (uno per mostrare video presenti sul mio server e uno per i video di YouTube: ora ci pensa direttamente WordPress).

    cioè? 😀

  8. conoscete Thematic? dalla prossima versione ci sarà un aggiornamento che permetetrà di condensare automaticamente tutti gli stylesheets e tutti i javascript. In teoria potremmo risparmiare almeno 10 html requests.

  9. @nicola: semplice: ho eliminato alcuni plugin che non utilizzavo più… e poichè erano plugin che aggiungevano i propri CSS alla pagina… mi ritrovo con qualche request in meno

    @danny: molto interessante… thematic lo conosco ma non l’ho utilizzato… dovrò fare un test con il prossimo progetto in partenza…

  10. complimenti.
    Vi consiglo ti testare le pagine anche con http://www.websiteoptimization.com e http://ismyblogworking.com/. Inoltre ho ottimizzato le fotografie e le immagini con http://tools.dynamicdrive.com/imageoptimizer/ ed ho guadagnato qualche byte. Infine ho utilizzato un programma per migliorare i file css con http://www.cleancss.com/(occhio perchè per un momento ho avuto paura che sparisse tutto il template!). Sto ancora lavorando ma quale secondo l’ho guadagnato.

    1. Ciao Gianluca,
      ho dato un’occhiata anche io e i colli di bottiglia mi sembrano soprattutto due: il javascript che viene scaricato per “mettere in rotazione” gli ultimi articoli e tutto quello che compone il widget di Facebook: entrambi i download richiedono un bel po’ di tempo per essere completati…
      Mentre su Facebook c’è poco da fare, sul javascript sipotrebbe provare a lavorare un po’, comprimendolo per esempio. Io non l’ho mai fatto ma si può provare a cercare in giro qualche dritta… Usi qualche plugin di cache?

      1. cia oStefano. Sì, utilizzo i due plugin di cui parli nell’articolo. Il primo da parecchi otempo mentre il secondo da quando l’ho letto. Mah, i tempi non mi sembrano proprio proprio accorciati però.
        Ti scrivo in posta privata.

        ciao e bentornato!

  11. Salve ragazzi, ho installato supercache ma non riesco a capire cos’è la funzione “Blocco di protezione: Disattivato “.
    Ho cercato in rete ma nulla, voi ne sapete qualcosa?
    Grazie

  12. ciao stafano, avrei bisogno di una tua consulenza per il mio sito perchè tra un po devo avviare delle campagne pubblicitarie e se il mio sito non è abbastanza fruibile ed efficiente, risulterebbe tutto vano.
    Potrei assillarti lasciando molti messaggi sul tuo blog ma sarebbe una vera rogna per te rispondere e tutto questo gratuitamente, leggo in giro messaggi di persone che pretendono assistenza e risposte rapide tutto gratuitamente!
    Non avendo mai fatto una cosa del genere , ti chiedo se lo puoi fare ed i costi che credo vadano in base al tempo che ti impiega.
    La situazione non è tragica e credo che per quanto sei pratico, potrebbe impegnarti un oretta.
    grazie…diego

  13. tanto per iniziare….
    versione wp 3.01
    blog installato nella root principale mentre i files e le cartelle di sistema sono nella sottocartella “blog”.
    Ho molti plugin che mi servono, ho provato a fare una selezione ma mi servono un po tutti, poi se li vedrai, magari mi cosigli quale è da eliminare perchè impalla troppo wp.
    Ho cancellato oltre che disinstallare i plugin superflui.
    Una volta installato supercache, le pagine si caricavano velocemente 10 sec. circa, ma mi arrivavano molte notifiche dai Web monitoring (applicazioni esterne che controllano il sito)che il sito era irragiungibile.
    Disinstallato supercache, niente notifiche.
    Oltre a questo mi servirebbe un collaudo del sito, magari ti registro e ti abilito come amministratore.
    Secondo step:
    vorrei inserire wp e-commerce e per non appesantire ulteriormente il sito avevo pensato di installarlo in un altra cartella nella root principale chiamandola “shop”; però temo che un utente già registrato debba registrarsi nuovamente per acquistare.
    Che mi consigli?
    Grazie

Rispondi