Joomlashow arrow Articoli arrow Le performance di Joomla: migliorare la velocitÓ di caricamento

Le performance di Joomla: migliorare la velocitÓ di caricamento

14-03-2008 15:48

Scritto da Nemesis Design

Anche se Joomla è uno dei migliori CMS sulla piazza può peccare se parliamo di performance.
Ci sono alcune operazioni comuni che possono essere effettuate per migliorare la velocità di caricamento del nostro sito.
Anche se le migliori performance si possono ottenere su un server dedicato che utilizza Lighttpd (web server considerato più veloce rispetto ad Apache) e un server MySQL installato sullo stesso server, livelli di performance accettabili possono essere raggiunti con quasi tutti i pacchetti di hosting. Per alcuni l'upgrade a un server dedicato potrebbe non essere molto facile e pratico.
Vediamo di seguito alcune buone pratiche che possono aiutarci nel migliorare la performance / velocità di caricamento dei nostri siti (queste pratiche vanno bene per qualsiasi piattaforma, non solo Joomla).

E' disponibile un'articolo riguardante Joomla 1.5 contenente informazioni più aggiornate e dettagliate: Migliorare la velocitÓ di caricamento di Joomla 1.5.

Ottimizzazione del template

Iniziamo il discorso con uno dei problemi più comuni e dannosi che si notano spesso in siti basati su Joomla (e non solo).
Esistono letteralmente migliaia di templates realizzati appositamente per Joomla, e la maggiorparte di essi si presenta bene, ma molti hanno alcune gravi penalità per quanto riguarda la performance. Il problema è dato dal fatto che alcuni di quei templates usano più di 70 immagini per visualizzare la pagina. Ogni immagine genera una nuova richiesta HTTP e attende di essere scaricata: questo processo provoca un aumento del tempo di risposta. Anche le richieste effettuate per richiamare Javascript e Css esterni aumentano il tempo di risposta. Mentre un codice che utilizza molte tabelle per l'impaginazione dei dati appesantisce di molto le pagine generate da Joomla. Riassumiamo:

  • Numero delle immagini caricate;
  • Peso delle immagini caricate;
  • Codice generato dal template, un codice senza tabelle è solitamente più leggero ed accessibile;
  • Numero di file Javascript e Css caricati esternamente

Per il numero delle immagini possiamo cercare di ridurre il numero delle immagini da caricare al minimo possibile, raggruppando gli sfondi in un unico sfondo lì dove possibile e usare gli sprites per i rollover dei link che usano immagini diverse per i diversi stati a:link, a:hover ed a:active (cosa sono gli sprites? articolo in italiano - articolo in inglese).
Per il peso delle immagini dobbiamo individuare quelle che pesano di più e controllare se è possibile ottimizzarle, ad esempio riesportandole con il nostro programma di editing grafica preferito (Gimp, Fireworks, Photoshop ad esempio) a una risoluzione più bassa o in un formato più appropiato (PNG per le immagini con pochi colori, JPG a qualità e risoluzioni adeguate per le immagini che contengono sfumature).
Per quanto riguarda il codice XHTML generato da Joomla, oltre all'eliminazione delle tabelle non necessarie (le tabelle dovrebbero essere utilizzate solo per formattare dati tabulari e non per la presentazione di un layout), dobbiamo stare attenti al numero dei moduli e dei contenuti caricati: non è sempre una buona idea caricare tutti i moduli in tutte le pagine o mostrare pagine troppo lunghe senza suddividere i contenuti in più pagine.
Per il numero dei file Javascript e Css caricati esternamente possiamo considerare l'idea di creare un'unico file Javascript e un unico file Css compressi che utilizzeremo solo online tenendo le copie degli altri files non compressi in locale nel caso ci servisse di fare delle modifiche.
Per fare capire questo concetto faccio un esempio concreto:
solitamente quando realizzo un template (non solo per Joomla), preferisco tenere i file CSS separati per una questione di ordine e di velocità di sviluppo. Nel caso effettuassi una compressione senza tenere una copia dei files originali, diventerebbe difficile effettuare delle modifiche ai files compressi.
Ad ogni modo, per testare la velocità di caricamento delle vostre pagine esistono molti tools gratuiti, ad esempio Website Analyzer e il componente per Firefox Yslow.
Esiste anche un componente per Joomla basato sullo script PHP Speedy che effettua queste operazioni automaticamente, ma non pensate che sia una soluzione magica e perfetta per ogni situazione.

Gzip, qualche volta

Comprimere le pagine con la funzione Gzip è un'ottima soluzione nel 90% dei casi.
Se il processore del vostro server è più veloce rispetto alla banda (sempre 90% dei casi), allora abilitare la compressione Gzip determinerà un miglioramento della velocità di caricamento del vostro sito. Dico questo perchè l'uso di questa funzione richiede un utilizzo della CPU non indifferente. L'unico modo per vedere se l'uso di questa funzione restituisce benefici reali è provarla: se non notate un miglioramento o notate un sovraccarico della CPU, disabilitate questa funzione. È abbastanza raro che succeda, ma non vi resta che provare.

Non tutti i componenti sono "buoni componenti"

Se si guarda la directory di estensioni di Joomla, nella maggior parte dei casi possiamo trovare un componente per ogni cosa che avremmo voluto fare. Il problema è che alcuni di questi componenti sono DAVVERO inefficienti e rallentano drammaticamente il nostro sito.
Se volete provare un modo facile per individuare se avete questo tipo di componenti installati sul vostro sito, provate questo componente di caching, ma non abilitate il caching, bensì lasciate che registri il tempo di caricamento per ogni URL. Dopo una settimana o più, osservate la lista generata e trovate le URL lente. Quelle URL vi permetteranno di capire quali sono i componenti più lenti del vostro sito. Se individuate un componente davvero lento, potete considerare l'idea di provare un componente alternativo.

Le statistiche possono sembrare carine ma...

Le statistiche utilizzano una quantità impressionante di query SQL per fare quello che devono fare.
In molti casi non vale la pena di affidarsi a componenti di terze parti per le statistiche, generano delle ottime statistiche ma a volte con un caro prezzo in tempo di caricamento.
Valutate bene il vostro sistema di statistiche, Google Analytics in molti casi è più che sufficiente. Se volete un sistema di statistiche efficiente che non rallenti il vostro sito, installate un sistema di statistiche che analizza i log del server.

I mambot / plugin sono davvero potenti ma...

Date un'occhiata a quali mambot / plugin vengono caricati dal vostro sito joomla. Disabilitate quelli che non utilizzate e disinstallate quelli di cui siete sicuri non avrete mai bisogno. Se il codice dei plugin non è efficiente al 100% e non è necessario avrete solo uno spreco di risorse.
Questo significa che se usate un plugin che peggiora le prestazioni del vostro sito, dovreste considerare l'idea di utilizzare un'alternativa.

SEF non è anche Server Friendly

Una delle cose migliori che potete fare per il vostro sito è di ottenere delle URL migliori, umanamente comprensibili e ottimizzate per i motori di ricerca.
La funzione nel core di Joomla fa un lavoro accettabile, ma ci sono molti componenti di terze parti che generano delle ottime URL. Il problema è che questi componenti effettuano molte query e utilizzano molte risorse, e nel caso abbiate un gran numero di visitatori, non solo andate incontro ad un rallenramento, ma rischiate un crash del server. Scegliete con cura il vostro componente che riscrive le URL, aggiornatelo spesso, e non smettete mai di testarlo. È importantissimo che abilitiate la cache delle URL che vengono riscritte e che le monitoriate per essere sicuri di non avere problemi.
La versione 1.5 di Joomla ha introdotto un notevole miglioramento nel SEF di base, è possibile utilizzarlo anche senza mod_rewrite. Probabilmente ad oggi non è ancora in una fase matura ma credo che entro un tempo realtivamente breve avremo un ottimo SEF di base per Joomla 1.5, leggero e ben funzionante.

Abilitare il Caching il più possibile

Abilitare il caching di Joomla è un'ottima idea: velocizzerà il caricamento dei contenuti di Joomla e dei moduli (i mambot / plugin non necessitano di essere processati ogni volta che la pagina viene caricata). Abilitate la cache anche per i singoli moduli e per i singoli componenti che ne sono dotati, specialmente i feed RSS.
Fate attenzione quando fate delle modifiche al vostro sito, se dopo aver effettuato delle modifiche non notate dei cambiamenti non spaventatevi: azzerate la cache. Potete farlo con permessi di super administrator dal menu superiore del back-end (sistema - pulizia cache).

Trovare le Query inefficienti

Trovare le query che rallentano il vostro sito non è semplice, perciò se non avete delle conoscenze per quanto riguarda Php e MySQL potreste non essere in grado di farlo da soli.
Abilitate il debugging dalla configurazione di Joomla, e osservate attentamente il vostro sito e le query che vengono generate. Dovreste cercare di tenere il numero delle query sotto i 50 per un risultato soddisfacente, sotto i 30 per un ottimo risultato. Cercate di capire quali sono le query inefficienti:

  • query che chiedono più volte lo stesso dato;
  • query che potrebbero essere unite con dei JOIN;
  • query che vengono effettuate anche se non ne avete bisogno (ad esempio: una query che chiede un dato che poi non verrà visualizzato perchè disabilitato).

Se non avete buona dimestichezza con Php e MySQL, se avete bisogno di effettuare quest'ottimizzazione per migliorare il vostro businness, potreste considerare l'idea di rivolgervi agli sviluppatori dei componenti che utilizzate, oppure a dei professionisti.

State lontani dai Bridge

Un metodo popolare di incorporare funzionalità in Joomla è quello di utilizzare bridge, ossia delle integrazioni con altri script che non sono stati realizzati per essere integrati con Joomla, ma per funzionare come unità a se stanti.
Per fare ciò è spesso necessario modificare il core di Joomla e il core di altri script (ad esempio SMF o Gallery2) per poter usufruire delle funzionalità di tutti e due gli script. A prima vista questo può sembrare grandioso dato che l'altro script offre spesso molte funzionalità in più rispetto alle estensioni ideate appositamente per Joomla, ma se guardiamo più a fondo scopriremo l'altra faccia della medaglia.
Il problema è che i due script sono entrambi sistemi indipendenti, ciò significa che ognuno dei due programmi deve caricare il suo core di funzioni (frameworks, gestione utenti, eccetera). Questo provoca un ENORME penalità in termini di performance, perchè si stanno caricando praticamente due pagine software ad ogni caricamento.
Utilizzare un'estensione ben integrata in Joomla può provocare una perdita di funzionalità, ma creerà sicuramente un beneficio in termini di velocità di caricamento.

Ottimizzare il database

Ciò che viene messo maggiormente sotto stress nella maggiorparte delle installazioni di Joomla è il Database server.
Esistono principalmente due modi per ottimizzare il database:

  • Ottimizzare le tabelle;
  • Ottimizzare lo schema;

La differenza è che la prima ottimizza i dati già immagazzinati, la seconda ottimizza il modo in cui i dati vengono immagazzinati.
Lo schema necessita di essere ottimizzato una volta sola, mentre letabelle hanno bisogno di essere ottimizzate regolarmente (man mano che i dati vengono aggiunti, modificati e cancellati).
Per ottimizzare le tabelle andate in phpMyAdmin, selezionate tutte le tabelle e selezionate "ottimizza tabella", per saperne di più consultate questa sezione dal sito di MySQL. Nella directory di estensioni di Joomla ho trovato anche questo plugin: Optimize Table.
Per ottimizzare lo schema invece consultate quest'altro articolo "Improving Joomla Queries".

Backup e monitoraggio del server

È importante effettuare dei backup regolari: "Cosa c'entra questo con le performance?" - bene, ha molto a che fare con le performance. Senza dei backup regolari, come sarebbe possibile ripristinare il sito a una configurazione ottimale in caso un'installazione, un'aggiornamento o una modifica va male?
Un improvviso rallentamento del sito potrebbe essere causato da tentativi di attacco provocati da Exploit (speriamo di no, ma è possibile).
Il miglior modo per fare dei backup regolari è quello di utilizzare script che lo fanno automaticamente, potete iniziare la vostra ricerca dalla sezione backup della directory di estensioni di Joomla.
Ricordate: ogni volta che dovete fare una modifica strutturale al vostro sito, installare un componente o effettuare un'aggiornamento, effettuate un backup, potrebbe salvarvi da gravi perdite di dati.

Conclusioni

Ho scritto questo articolo prendendo spunto da "So, you want to speed up Joomla?", scritto da Anthony Ferrara su JoomlaPerformance.com.
Questo articolo non può essere considerato una vera e propria traduzione in quanto ho aggiunto alcune mie considerazioni e alcuni consigli, eliminando invece pareri non neutri.
Nello scrivere quest'articolo ho cercato di fornire un punto di vista più oggettivo possibile.
Ad ogni modo, tengo a precisare ancora una volta che la soluzione magica non esiste: potete ottenere buoni risultati solamente effettuando molti test e ricercando miglioramenti di volta in volta.

Commenti utenti  

Visualizza 7 di 7 commenti

Ottimo guidia!

Veramente bravo! Ottimo lavoro direi. Complimenti!

Scritto da: Daniele (Guest) 23-05-2008 13:36

Grazie!

La tua guida mi sta risultando molto utile, ti ringrazio di cuore... per ora ho aumentato del 40% le prestazioni del sito www.incontrarsiasalsomaggiore. org. C'Ŕ ancora molto lavoro da fare, ma sono sulla strada giusta!

Scritto da: Crix (Guest) 01-05-2009 21:41

Ottima guida.

Ottima guida. Io la ho usata per il mio sito di http://www.casa.sardegna.it

Scritto da: Dan (Guest) 07-05-2009 16:12

funziona

grazie, buoni consigli, funzionano

Scritto da: alessio (Guest) 08-06-2009 20:40

well done!

Articolo molto interessante, pieno di link, utilissimo.

Scritto da: Chiara (Guest) 15-10-2010 15:24

Una directory pachiderma

Sto costruendo una directori con sobi2, chiamarlo pachiderma Ŕ fargli un complimento...le sto provando tutte ma le performance restano lente....se avete consigli questo Ŕ il sito:Directory italiane

Scritto da: Franco (Guest) 10-02-2011 22:43

altÓ velocitÓ

Grazie a questi consigli appena clicco appare l'home page sembra di essere su un server dedicato grazie da www.PortaleMilano.com

Scritto da: PoPker (Guest) 18-12-2011 00:10

Aggiungi il tuo commento

Solo gli utenti possono commentare un'articolo.
‹ Precedente

Login

Hai dimenticato la password?

Registrati