FAQ - domande frequenti

Domanda

 Il mio sito sembra indemoniato. Se uso Safari, tutto bene. Se uso Firefox, sembra che non prenda il login, però se rinfresco la pagina mi accorgo di essere loggato. Stessa cosa col carrello della spesa: aggiungo e non vedo nulla, però se rinfresco la pagina appare tutto.

Risposta

Sar-At dalla versione 7 fa un uso aggressivo della cache per velocizzare al massimo il sito, cioè mette in una memoria di lavoro le pagine generate e le invia al browser senza ricrearle daccapo quando si accorge che nulla è cambiato dall'ultima volta che un visitatore ha guardato la pagina. In sostanza, se la vostra pagina home contiene cinque news, Sar-At la genera, la salva nella sua memoria cache  e poi la manda a tutti i visitatori. Se voi aggiungete una nuova news, Sar-At cancella la cache.

Tutto funziona automaticamente. L'unica accortezza è riflettere bene, quando si scrive una Vista avanzata ad hoc, e decidere seguendo le istruzioni a video se essa sia compatibile con la cache. (Tutte le Viste create con la modalità standard e con quella avanzata sono automaticamente compatibili con la cache).

A partire dalla versione 8.1, Sar-At usa una ulteriore tattica, chiamata tecnicamente HTTP IF MODIFIED SINCE. È necessario, perché Google e gli altri motori di ricerca sono diventati anch'essi molto aggressivi e provano a scaricare dal server migliaia di pagine all'improvviso. Diventa indispensabile segnalare loro quali pagine non sono cambiate dall'ultima volta.

L'autore di sito che ci ha fatto la domanda qui sopra ha fatto un errore banale e comprensibile -- e subdolo. Per mostrare il carrello della spesa lui usava un indirizzo di forma showPage.php?template=prodotti con una pagina mastro che ingloba l'elenco di prodotti acquistandi {BEGIN showSarelCart} eccetera, in sostanza.

Quando Sar-At vede un indirizzo come questo, che cosa fa? Vede che stiamo mostrando una pagina della sezione prodotti. Guarda quando è stata aggiunta per l'ultima volta una pagina ai prodotti. Trova che è roba di tre giorni fa. Dice al browser (Firefox nel caso del nostro corrispondente, o lo spider Google nel caso di un motore di ricerca che indirizza il nostro sito) che la pagina è roba di tre giorni fa. Se il visitatore ha aggiunto un prodotto al carrello cinque secondi fa, in sostanza non vede il carrello.

Se la pagina che mostra il carrello viene posizionata all'indirizzo  showPage.php?template=sarelcart il problema non si pone, perché quella tabella viene aggiornata ogni volta che qualcuno aggiunge o toglie un prodotto dal carrello.

Qui sopra abbiamo parlato di ecommerce, ma il medesimo problema potrebbe capitare con altre sezioni e altre pagine mastro. Teletelo presente.