Problema cache e logout

5 contenuti / 0 new
Ultimo contenuto
Problema cache e logout

Problema non gravissimo, ma comunque fastidioso.

Attivando la cache di drupal, su normal, a volte (spesso) capita che facendo il logout i blocchi in home page non si aggiornino (ma non solo in home page... dipende dalla pagina in cui si fa il login e il logout).
In pratica. succede questo:

Stando sulla home page del sito cliccando sul tasto logout il sito compie sì il logout (nel senso che se provo dopo aver fatto logout ad accedere a qualche pagina riservata, per esempio amministrazione, non mi fa entrare e mi da la pagina di accesso negato), ma quando ricarica la home page i blocchi restano come se si fosse ancora loggati (profilo personale, crea contenuto, etc) e non compare il blocco di login. Ho fatto un po' di test e ho scoperto che:

- Se il logout lo facciamo in home page, il problema ci sarà solo in home page (dove i blocchi resteranno come se si fosse ancora loggati). Se infatti proviamo a cliccare su un articolo (o su qualunque pagina che non sia l'home page) i blocchi saranno giusti (ovvero non ci saranno le opzioni "crea contenuto", "profilo personale", etc. ma ci sarà il blocco di Login per potersi riloggare). Non solo... ho notato che addirittura conta anche l'indirizzo. Nel mio sito ho due link che riportano alla home page: il primo è il logo nella testata che manda a www.devilhouse.org/devilab , l'altro invece si trova sopra la testata, nei primary links, e manda invece a www.devilhouse.org/devilab/node .
Questa semplice differenza di link, nonostante la pagina sia la stessa, crea una differenza.
Poniamo che abbia fatto il logout nella pagina www.devilhouse.org/devilab (quella del logo, per intenderci) e che i blocchi rimangano come se fossi ancora loggato. Bene, si fa per dire, se clicco sul logo e vado a www.devilhouse.org/devilab la pagina che mi verrà caricata resterà con i blocchi "da loggato", se invece clicco sulla scritta home dei primary links, che manda alla pagina www.devilhouse.org/devilab/node , i blocchi saranno giustamente quelli dell'utente che si deve ancora loggare (cioé quello con la login e nel blocco di navigazione scompaiono i vari "crea contenuto", etc). Trovo la cosa particolarmente bizzarra... in quanto comunque la pagina dovrebbe essere la stessa.

- Purtroppo ho anche notato che, come detto, dipende dalla pagina. Se dopo essermi "sloggato" in home page e i blocchi restano quelli dell'utente loggato in quella pagina, come detto, cliccando su di un'altra pagina i blocchi tornano normali e posso di nuovo loggarmi tramite il blocco login. Se però dopo essermi loggato provo a "sloggarmi" di nuovo nella pagina dove mi ero loggato... a sua volta anche quella pagina mi ridà i blocchi come se fossi ancora loggato.
L'unico modo che c'è per ripristinare la situazione è svuotare la cache del proprio browser e allora, ovviamente, la situazione ritorna normale.

- Il problema non lo da sempre sempre... a volte tutto funziona regolarmente, a volte no. Non ho ancora capito perché ogni tanto lo da e ogni tanto no (secondo quali criteri), però la stragrande maggioranza delle volte, purtroppo, il problema succede. Diciamo che le volte che non succede... sono delle rare piacevoli sorprese. ;)

- Ho fatto un giro su drupal.org e sembra che sia un problema conosciuto, ma ancora irrisolto. E' una cosa relativamente grave, ma comunque è una bella scocciatura (non si può mica chiedere agli utenti di svuotare la propria cache ogni volta).
A questo indirizzo c'è una issue aperta: http://drupal.org/node/197786

L'unica soluzione che viene data è di mettere nell'header della propria home page il seguente codice:

<?php
cache_clear_all
($url, 'cache_page');
?>

Però mi chiedo, ma soprattutto VI chiedo: mettendo tale codice praticamente non si annulla totalmente il lavoro del sistema di caching (che dovrebbe aumentare le prestazioni del proprio sito). A questo punto non si fa prima a disattivare il sistema di caching di drupal?

Insomma, mettendo questo codice, serve comunque a qualcosa tenere la cache attivata, o tanto vale disattivarla?

Resto in attesa di una qualche risposta (magari anche qualcuno che ha risolto il problema perché alla cache non vorrei rinunciare).
Grazie per l'attenzione. :)

P.s. La versione che utilizzo è la 5.7

Nessuno mi sa dire se quel codice annulla totalmente il funzionamento della cache o meno?

Non ho letto tutto il tuo post.... troppo lungo :-P
comunque quel comando, cancella solo le pagine in cache e non tutto, per cancellare tutto si usa:
cache_clear_all();
oppure:
cache_clear_all(NULL, 'cache_block');
cache_clear_all(NULL, 'cache_page');

Ciao
Gianni

Prima di tutto ti ringrazio molto per la risposta, poi, per essere sicuro di aver capito, ti pongo la domanda in un altro modo: quindi se inserisco quel codice nelle mie pagine ha comunque un senso mantenere attivato il sistema di caching di Drupal?
Non diventa completamente inutile, ma velocizza comunque le pagine caricate?
Grazie. :)

Spero che ad oggi tu abbia già risolto il problema...

In ogni caso la risposta è sì: se metti quel codice in ogni pagina, ad esempio nel tuo template è pressocché inutile attivare il sistema di caching. Se vuoi invece disattivare la cache solo per home page, dovresti crearti un template apposta per la home... dove mettere il codice.

Ciao

-----------------------
Carlo Sacripante