WordPress e i rischi della compressione – WP Minify

L’idea mi e’ venuta spulciando i vari hacks di WP Recipes e WP Candy: come sapete ./lsd ha un pageload non indifferente e quando pubblico nuovi post il server si affatica ancora di piu’; in genere online ci sono sempre almeno 15 utenti (tra picchi di 27 e di 3 a seconda dei giorni) e la navigazione potrebbe risultare rallentata.

Questo perche’, anche usando gli sprites, il contenuto grafico occupa la maggior parte del tema; un paio di utenti di passaggio mi hanno suggerito di usare un plugin di cache come WP Cache (di cui avevo gia’ parlato in questo post) ma le prove che ho fatto sono risultate deludenti al massimo.

Mi sono quindi indirizzata su plugins alternativi come WP Minify, WP HTML Compression, CSS Compress e vorrei presentarveli, tutti, dopo averli provati e dopo aver testato con mano quale fosse il risultato.

Cominciamo con WP Minify: la particolarita’ di questo plugin e’ quella di utilizzare il motore Minify (applicativo PHP5) per comprimere al meglio tutti i Javascript ed i files CSS; questo permette di diminuire il tempo di pageload del blog.

La maggior parte dei Javascript e dei CSS viene caricata negli header (header.php) – per il footer (footer.php) vale una regola d’oro: eliminate qualsiasi link non necessario e, se possibile, evitate anche i tracker che mandano richieste al server appesantendolo, ma se proprio non ne potete fare a meno eliminate il codice nativo di wordpress preferendovi dei link statici – e WP Minify non fa altro che passare tutti quei files all’engine Minify che provvede a consolidarli, minimizzarli e comprimerli in uno script molto semplice che torna a caricarsi nell’header file.
Ecco un esempio di come funziona la compressione, direttamente da Google Code:

Questo permette di ridurre drasticamente i tempi di caricamento e funziona sia per i Javascript, per i CSS e per il codice puro HTML.

Come potete vede in figura il pannello di controllo e’ piuttosto semplice e comprende tutte le informazioni necessarie al suo funzionamento, assieme a degli utilissimi tool di debug.

Ma non finisce qui.
Ci sono dei Javascript che, se compressi, perdono la loro funzione e causano discreti problemi sul vostro blog, a me e’ capitato con il codice di Project Wonderful e anche con Google AdSense..
Come ovviare quindi questo problema evitando gli @import? WP Minify presenta una soluzione semplice: l’esclusione di alcuni Javascript e di alcuni CSS: nella casella preposta basta inserire gli script da non far comprimere ed il gioco e’ fatto.

Idem dicasi per quei files che vengono caricati esternamente: possono essere messi in una cache in modo da risultare sempre accessibili – attenzione pero’: questo vale per i contenuti statici poiche’ per quelli dinamici la soluzione non e’ efficace affatto!

Vediamo l’installazione:

  • scaricare il plugin dal repository, unzip o unrar, e caricarlo nella directory dei plugins (wp-content/plugins/); in alternativa caricarlo direttamente dall’installazione dal tab Add New in Plugins (/wp-admin/plugin-install.php?tab=upload);
  • prima di attivare il plugin assicuratevi che la directory ‘wp-content/plugins/wp-minify/cache abbia i dovuti permessi per essere scrivibile dal server (chmod 777);
  • attivate il plugin dal pannello di amministrazione dei plugin.

Ma in sostanza, funziona?
Dipende.. dipende dal tipo di tema (ho notato che con il mio tema non c’e’ molto da fare, giacche’ le chiamate, anche snellendole al massimo, risultano sempre troppe..) ma anche da quanti e quali plugin avete installati.
./lsd viaggia con 23 plugins installati e, di questi, almeno 3 hanno delle chiamate JS che non possono essere compresse pena la disgrazia maxima! Per me il plugin non e’ cosi’ utile, dal momento che la differenza di chiamate non e’ significativa: ho risparmiato 2 chiamate HTTP e circa un mezzo secondo in meno, mentre pulendo ben bene i miei files, eliminando fisicamente i plugin non utilizzati (anche disattivati riempiono le tables del database) e inserendo link statici al posto delle chiamate standard di WordPress ho ottenuto lo stesso risultato.
Disattivero’ il plugin entro una settimana se non ci saranno ulteriori miglioramenti – diamogli un po’ di tempo per il rodaggio – in misure di tempo e chiamate, ma continuero’ la “pulizia” del database e del codice, eliminando anche i commenti che, francamente, oltre alla simpatia non hanno niente di utile.

Dovreste sicuramente fare una prova e vedere esattamente quanto riuscite a risparmiare in termini di tempo e di chiamate, certo e’ che per un risparmio di 1 secondo e 3 chiamate HTTP forse non vale la candela.

Il changelog aggiornato a questa versione (1.0.3) e’ consultabile in formato .txt qui mentre alla pagina dedicata potete vedere una lista dei problemi comuni causati dall’installazione.

Tutto il contenuto della directory wp-minify/min/ e’ distribuito sotto licenza New BSD License (compatibile GPL) mentre tutto il resto del pacchetto e’ sotto licenza GPLv3.

full-stack graphic designer | social media manager | community manager | blogger, autrice e saggista | appassionata di Giappone, poker e pianoforte | mai senza occhiali da sole | attaccabrighe per natura