Gestire la cache

ed evitare di far impantanare il server che ha altre cose da fare

La cache, ovvero come fare un sito dinamico che non si muova troppo.

Ricordiamo che questo tutorial è valido esclusivamente fino alla versione SPIP 1.8.3 ed è obsoleto a partire dalla versione SPIP 1.9. È in corso la riscrittura del presente articolo nell’area riservata di questo sito.

È comunque possibile seguire questo tutorial se si omettono i file .php3 e localizzando i file HTML nella cartella squelettes/ che se non presente dovrà essere creata alla radice del sito.

Nelle lezioni precedenti abbiamo cominciato a elaborare dei modelli. Il successo del nostro sito rischia di essere folgorante. Pensiamo ai poveri neuroni del nostro computer. In questa lezione non faremo niente di divertente, e nemmeno di fondamentale. Gli scansafatiche ne approfitteranno per schiacciare un sonnellino al calduccio...

A partire da SPIP 1.9, l’intervallo temporale della cache descritto sotto viene definito nel file HTML del modello, mediante un segnaposto #CACHE{intervallo}, per esempio #CACHE{3600}

Riassunto per quelli flemmatici e per quelli impazienti: nei file di chiamata del tipo tutorial.php3, impostate $delais = 3600; invece di 0.

...

Nel momento in cui una pagina viene richiesta a SPIP, esso controlla se, per caso, questa pagina non era già stata generata in precedenza. Se l’URL richiesto è http://miosito.net/tutorial.php3?id_article=12, SPIP guarda nella sua sotto-cartella CACHE/ se questo file esiste e, in caso positivo, confronta la data del file nella cache con il $delais impostato nel file di chiamata tutorial.php3.

Nel nostro esempio noi abbiamo impostato $delais=0; -che causa una rigenerazione sistematica delle pagine ogni volta che il sito viene consultato. Passiamo ora a $delais=3600; (espresso in secondi).

La nostra pagina web verrà rigenerata solo se, quando un visitatore la richiede, la sua versione nella cache risale a oltre un’ora prima (cioè 3600 s.). In caso contrario, SPIP legge semplicemente il contenuto del file nella cache [1], e invia il risultato senza collegarsi al database (eccetto che per inserire un "hit" nelle statistiche).

Come è possibile impostare questi $delais al fine di ottimizzare il rapporto reattività/carico del server? Non vi è una soluzione miracolosa, ma non si deve avere timore di impostare un ritardo di una giornata (cioè, $delais=24*3600;) o anche maggiore per gli articoli e le rubriche. Le pagine di navigazione più importanti possono avere dei $delais più brevi (per esempio, venti minuti o un’ora) se si presume che il vostro sito debba reagire all’approvazione frequente delle nuove brevi e dei siti in syndication... Se il sito è su un server condiviso con altri siti, abbiate rispetto degli altri e non prendete tutto il tempo di calcolo per pagine che cambiano di rado: sarebbe anche più stupido che, sui lunghi articoli o sui sommari, la generazione delle pagine possa prendere qualche secondo, il che rallenterebbe la consultazione delle pagine...

Come forzare un’aggiornamento? Abbiamo appena deciso dei tempi $delais estremamente lunghi quando ci accorgiamo di un erore di ortogràffia in una pagina. Correzione nell’area riservata... Ma come cancellare subito tale obbrobrio che deturpa il nostro sito?

-  Nell’area riservata, cliccare su "Vedi on line" avvia la rigenerazione per le pagine corrispondenti a #URL_ARTICLE oppure #URL_RUBRIQUE dell’articolo o della rubrica corrispondente. È il caso più frequente. E se non lo è?

-  Nella parte "Salva/Ripristino" dell’area riservata, un pulsante "Svuota la cache" cancella tutti i file nella cache (utile se si fanno molte modifiche e il sito è molto complesso, altrimenti è da evitare).

-  Tuttavia, la soluzione più semplice è di chiedere a SPIP, nella home page dell’area riservata, di "inviare un cookie di amministrazione". Questo cookie si incastonerà nel browser e SPIP potrà riconoscervi al momento di inviare la pagina nell’area pubblica del sito: nella parte bassa della pagina apparirà il pulsante "Rigenera la pagina".

Ritorno al contesto: Ritorniamo alla nozione di contesto. Se il modello viene chiamato con un contesto di id_article, di id_rubrique oppure di id_breve, apparirà un altro pulsante quando SPIP individua il cookie: "Modifica l’articolo (o rubrica, o breve)", che porta direttamente sulla pagina corrispondente nell’area riservata. Scusate se è poco...

Ultimi dettagli:
-  per ragioni evidenti, il motore di ricerca non causa l’aggiornamento della cache, e le pagine con i forum sono aggiornate quando viene inviato un nuovo contributo.
-  la cartella CACHE/ nella struttura ad albero del sito è suddivisa in 16 sotto-cartelle numerate 0, 1, 2... 9, A, B... F, nelle quali i file della cache si distribuiscono quasi casualmente; ciò si definisce "hash della cache" e viene menzionato per amor di completezza.
-  i file della cache sono altresì utilizzati quando il database è "down", ciò garantisce il sito contro interruzioni temporanee del server MySQL.

Note

[1Per gli specialisti, in effetti si tratta di un’istruzione include PHP del file corrispondente, che permette di eseguire un codice dalla cache...

Autore Fausto Barbarito Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, corsu, Deutsch, English, Español, italiano, Português, русский, slovenčina, Türkçe, українська