Sommario: In questo ottimo articolo di Hervé (InstantZero) vediamo come migliorare le performance del vostro sito Xoops.
Traduzione e adattamento di
questo articolo di Hervé Thouzard della
InstantZero.
A volte, le persone dicono che Xoops sembra essere lento. Può essere vero, ma ci sono ampi margini di migliorabilità.
La Instant Zero ha tra i suoi compiti il mantenimento di alcuni siti xoopsati e hanno deciso di condividere con la comunità le loro utilissime conoscenze.
In questo articolo, in 5 semplici punti, vediamo cosa potete fare per ottimizzare il vostro sito.
1. Il serverLa prima questione che andiamo ad analizzare è relativa al server, e a cosa è possibile fare con esso.
In base al tipo di server e di contratto che avete, si consiglia di attivare la compressione gzip.
Se avete un server Apache2 è anche necessario attivare il modulo di deflate (setacciate la rete per scoprire come installarlo ed utilizzarlo).
I browser odierni possono richiedere al web server le pagine in formato compresso; va da sé che trasferire una minore mole di dati abbassa il consumo di banda e i tempi di trasferimento. Il rovescio della medaglia risiede però in un maggior carico di lavoro per il server. Esattamente come comprimere una pagina HTML in un file ZIP e poi spedirlo.
Contattate preventivamente il vostro hosting provider per sapere se è possibile attivare tutti i moduli per l'utilizzo di questa tecnica.
Inoltre se possibile, si consiglia di installare lo Zend Optimizer o l'estensione eAccelerator.
Il PHP6 dovrebbe essere rilasciato con dei nuovi opcode per il caching, ma finché non sarà qui si dovranno utilizzare altri metodi per ottenere gli stessi vantaggi.
Con lo Zend Optimizer (o qualsiasi altro metodo di caching), lo script più utilizzato rimane precompilato in memoria, in modo da poter essere inviato nuovamente senza la necessità di interpretarlo ogni volta che viene chiamato.
Con le estesioni tipo l'eAccelerator, TUTTI gli script PHP chiamati dal vostro sito possono essere salvati in uno stato "compilato" nel vostro hard disk, senza doverlo richiedere ogni volta tramite web.
2. XoopsIl problema dei CMS è che tutto è dinamico, e il database viene spesso utilizzato. Xoops non fa eccezione a questa regola.
Xoops però utilizza un sistema di template chiamato "Smarty" che permette di utilizzare un sistema di caching nativo.
Tale sistema può dare problemi se utilizzato globalmente su uno o più moduli, ma può essere molto utile se utilizzato su singoli blocchi. E sicuramente, la vostra homepage avrà parecchi blocchi.
Non dimenticate dunque di attivare la cache su alcuni blocchi (tramite la relativa impostazione del singolo blocco sul pannello System > Blocchi).
Un ultima raccomandazione: molte persone dimenticano di disattivare l'opzione di controllo delle modifiche sui templates (System > Preferenze > Generale). Ricordatevi che tale opzione va attivata solo temporaneamente per effettuare modifiche ai template o al tema, e va disattivata appena terminato.
3. DatabaseIl vostro database viene interpellato in ogni pagina. E' chiamato da Xoops e dai vostri moduli.
Con il passare del tempo e delle chiamate, il vostro database può diventare non ottimizzato; la prima raccomandazione è dunque quella di installare e configurare XoopsCare. Con questo modulo, è possibile pianificare regolarmente i processi di ottimizzazione del vostro database.
Ricordate inoltre che un database ottimizzato è facilmente e velocemente esportabile e reimportabile (in caso di disaster recovery, ad esempio).
[
XoopsCare] In base al traffico che il vostro sito ha, potete selezionare un valore più grande o più piccolo per l'opzione "Mantieni il database ogni ...". Si raccomanda inoltre di utilizzare le opzioni "Cache e templates" e "Svuota sessioni".
In tema di sessioni, ricordate che più è grande la sessione che impostate, più la relativa tabella del database crescerà. E ricordate anche che i robot tipo Google utilizzano le sessioni...
Concludiamo questa disquisizione sul database parlando di alcune ottimizzazioni che potete portare alle tabelle MySQL utilizzate da Xoops e dai suoi moduli.
Prima di fare qualsiasi modifica al vostro database, effettuate un backup completo (struttura e contenuto).Come probabilmente saprete, Xoops utilizza il database per mantenere i suoi contenuti, e analogamente fanno i moduli. Ogni modulo ha le proprie tabelle MySQL, costituite dalla struttura (nome e campi) e dai dati contenutivi.
Ogni tabella può avere quanti indici volete.
Gli indici sono utilizzati per rendere le ricerche più veloci, ma rallentano le operazioni di inserimento di nuovi record (a causa della necessità di aggiornare l'indice ogni volta).
Il vostro sito però è molto probabilmente più utilizzato in lettura che in scrittura, per cui in caso rilevaste problemi di velocità potreste ragionare sull'inserimento di opportuni indici laddove possano essere più utili.
Per fare ciò, dopo aver fatto una copia di sicurezza del backup, si raccomanda di utilizzare uno script come phpMyAdmin. Dopo aver cliccato (sulla sinistra) sul nome della tabella, troverete sulla destra la sua struttura completa; a questo punto sarà sufficiente cliccare sul link o sull'icona per aggiungere un indice sul campo desiderato.
Vediamo ad esempio alcuni indici inseribili sulle tabelle Xoops.
a)
xoops_modules: questa tabella contiene l'elenco di tutti i moduli installati nel vostro sito. E' possibile inserire indici su 3 campi di questa tabella,
isactive,
weight e
hascomments.
b)
xoops_users: questa tabella contiene la lista di tutti gli utenti registrati al sito. E' possibile aggiungere un indice al campo
level.
c)
xoops_online: questa tabella viene utilizzata per controllare gli utenti online, e mostrarli nel blocco "Chi c'è online?". E' possibile indicizzare i campi
online_updated e
online_uid.
d)
xoops_config: in questa tabella vengono salvate tutte le configurazioni di Xoops e dei sui moduli. E' possibile aggiungere un indice al campo
conf_order.
e)
xoops_comments: come il nome suggerisce, questa tabella contiene i commenti di tutti i moduli. E' possibile indicizzare il campo
com_status.
f)
modulo multiMenu: questo popolare modulo permette la creazione di diversi menù con contenuti liberi. Nelle tabelle di questo modulo è possibile indicizzare i campi
weight,
hide e
submenu.
g)
modulo News: il modulo News è uno dei più diffusi motori articoli. Aggiungere un indice al campo
published della tabella
xoops_stories.
h)
modulo extCal: In questa ottima agenda è possibile aggiungere nella tabella
xoops_extcal_event gli indici ai campi
event_start,
event_end, e modificare il campo
event_approved da
int(11) a
tinyit(1) (e aggiungergli un indice). E' anche possibile aggiungere un indice al campo
cat_id. Se volete è possibile anche aggiungere un ulteriore indice multicampo composta da
event_start + event_end + event_approved.
i)
modulo Smartsection: questo modulo è utilizzato per la creazione di contenuti e pagine. Nella tabella
xoops_smartsection_items, è possibile indicizzare i campi
status e
datesub. Nella tabella
xoops_smartsection_categories[i], è inoltre possibile indicizzare i campi [i]parentid and
weight.
j)
modulo XoopsPoll: questo modulo è utilizzato per la creazioni di sondaggi e votazioni. Nella tabella
xoops_xoopspoll_desc, è possibile indicizzare il campo
weight.
k)
modulo Newbb/CBB: questo è il forum di Xoops. Nella tabella
xoops_bb_online, è possibile aggiungere un indice al campo
online_uid e nella tabella
xoops_bb_topics è possibile aggiungere uno al campo
approved. Nella tabella
xoops_bb_posts, è possibile indicizzare il campo
approved. Infine, nella tabella
xoops_bb_forums, è possibile aggiungere un indice al campo
parent_forum.
l)
modulo Catads: questo è un ottimo modulo per annunci. Nella tabella
xoops_catads_ads, è possibile indicizzare i campi
waiting,
published,
expired,
uid e
cat_id. Nella tabella
xoops_catads_cat, è possibile aggiungere un indice ai campi
weight e
pid.
m)
modulo SmartFAQ: come il nome indica, questo è un modulo FAQ. Nella tabella
xoops_smartfaq_categories, è possibile indicizzare il campo
parentid.
Questa lista non è ovviamente completa. Troverete sicuramente tabelle che necessitano di altri indici e anche tabelle senza.
Se siete sviluppatori o utenti esperti potete attivare il
Log query lente di MySQL per controllare eventuali colli di bottiglia.
Se non siete sviluppatori o utenti esperti, potete sempre vedere, via phpMyAdmin, se le tabelle usate dal vostro sito hanno o meno degli indici.
4. File utilizzatiAlcuni file sono utilizzati in ogni pagina, come ad esempio il file
xoops.js (cartella /include del vostro sito).
Se utilizzate un tema standard, questo file viene chiamato sicuramente ad ogni pagina del vostro sito.
Con un programma come
jsmin potete minimizzare la sua dimensione.
Può sembrare ridicolo, ma su siti ad alto traffico la differenza in termini di velocità si nota.
E' possibile utilizzare jsmin su qualsiasi altro Javascript utilizziate, ad esempio
jQuery o
Prototype.
Come regola generale per i file Javascript, inseriteli più in basso possibile nel codice del vostro tema.
Questa regola è applicabile anche al codice Google Analytics e Google Ads (se li usate).
Un altro tipo di file utilizzato dal vostro sito web, sono le immagini.
Provate a ridurre le dimensioni delle vostre immagini il più possibile.
Se lavorate con Photoshop, utilizzate la funzione "Salva per il web" e provate a comprimerli in modo ottimale.
Se non utilizzate Photoshop, si consiglia di usare
XnView (disponibile sia sotto Windows che Linux).
5. CSSIl vostro sito sicuramente utilizzano CSS chiamati dal vostro tema. Verificate che il foglio di stile non contenga troppi commenti e rimuoveteli se necessario.
Inoltre posizionate la chiamata al file CSS nel punto più alto possibile del vostro theme.html.