Una delle attività che svolgo professionalmente in ambito Joomla è la revisione di estensioni e siti per gli aspetti di sicurezza e velocità.
È inutile iniziare una discussione su quale sia l'aspetto più importante per ottenere il risultato. Questo cambia da sito a sito, la prima cosa da fare è decidere cosa consideriamo un tempo accettabile di generazione pagina e di download complessivo. Faccio due esempi.
1. un sito con 500 viste di pagina al giorno, 45 download/800Kb di risorse, ed un hosting da 100 €/ anno, magari il tutto costruito su un template rockettheme o yootheme... forse il cliente ha pagato meno di 3000 euro, e noi avremo un budget residuo per l'ottimizzazione molto limitato, quando avremo ottenuto un tempo di generazione della pagina inferiore a 1,2 secondi fuori cache e 0,5 da cache, uniti i css, usato una cdn per qualche libreria js e unite le altre avremo fatto il massimo.
2. Sempre in ambiti medio-piccoli (siti che fanno meno di 20,000 pagine / giorno), magari con un e-commerce di un mercato verticale ed una campagna di marketing attiva, diventerà desiderabile e giustificabile l'investimento di iniziare ad applicare ottimizzazioni più serie: sicuramente avremo un server dedicato e potremo dedicarci allo studio delle long queries, guardare uno per uno i moduli e iniziare a ottimizzare qualche query, e realizzare un unico sprite per la grafica (vedi l'esempio di repubblica.it
http://www.repubblica.it/static/images/homepage/2010/sprite-repubblica.png)
3. Solo sui siti con tanto traffico è giustificato iniziare a spostare un po' di tabelle su mongodb, separare la logica attraverso più server, e pian piano far fuori tutto il cms Joomla per riscrivere via via componenti super-ottimizzati e tagliati sulle nostre esigenze. I siti Joomla che fanno 5 milioni di visite al giorno, di Joomla usano il framework ed il backend: il resto che vediamo raramente include più che qualche riga del CMS come lo conosciamo. E' un processo cui si arriva per gradi e di solito con un team interno. A questo punto si può anche pensare all'ottimizzazione totale della homepage: ovvero pensare all'ottimizzazione di risorse statiche (sprite della pagina) e dinamiche (sprite per gli articoli!). Eppure nemmeno repubblica (che non è joomla, parliamo di ottimizzazione dell'html) se ne cura... ci sono limiti oltre i quali non conviene (economicamente) spingersi.
Quindi, per concludere, se rientrate nelle prime categorie, iniziate con strumenti automatizzati! Rapidamente, otterrete il 90% del risultato con:
- Un .htaccess in ciascuna delle cartelle chiave per usare la cache dei browser come si deve;
- La cache abilitata (incluso il plugin di sistema)
- Un template leggero. Niente framework di 500 files per il template
- Un hosting adeguato alle esigenze. Risultati fantastici con i server dedicati con disco SSD
- Devi includere jQuery? Usa una CDN... è gratis!
- Comprimi JS e CSS (per i secondi, prova too many files su http://www.fasterjoomla.com/it/download oppure ICH - nessuno dei due è completo, ma sono un buon inizio)
Nota importante: se il tempo di generazione della pagina è superiore a 1,5 secondi, la questione dipende dal componente che usi per la homepage oppure dal server, in ambo i casi è inutile ottimizzare il resto... risolvi sempre i colli di bottiglia nell'ordine di gravità, in questo modo sarà più immediato l'effetto e più facile valutare l'efficacia del lavoro. Ho appena ottimizzato un componente di un cliente che impiegava 12 secondi (sobipro), e riscrivendo la query principale siamo arrivati a 50ms ! Lui aveva già ottimizzato js, css e tutto il resto, ma con un componente o un modulo così piantato c'era poco da fare...