diegolamonica / EUCookieLaw

A Javascript and PHP solution to the European Cookie Law Issue
GNU Lesser General Public License v3.0
48 stars 13 forks source link

W3 TOTAL CACHE - probabile incompatibilità #65

Closed contattolab closed 9 years ago

contattolab commented 9 years ago

Con il plugin W3 TOTAL CACHE installato il sito è andato completamente OFFLINE. bisognava eliminare la cache dal plugin stesso e tornava a funzionare, almeno fino a quando l'utente non avrebbe svuotato la propria cache, infatti a seguito di prove, ogni volta che svuotavo la cache il sito andava offline, DISATTIVANDO W3 TOTAL CACHE il sito è tornato online,

diegolamonica commented 9 years ago

Con quale versione di EUCookieLaw si presenta il problema? Inoltre il problema è sempre ripetibile?

contattolab commented 9 years ago

l'ultima versione sicuro, total cache l'ho installato da poco, ma considerato i problemi relativi alla sitemap avevo intanto disattivato il tuo plugin.

contattolab commented 9 years ago

disattivando W3 total cache il problema di youtube viene risolto, ed il sito non va mai in offline.

con w3 total cache attivato ho notato che il file eucookielaw.ini veniva salvato nella cartella wp-content/cache (la cache creata da w3 total cache)

diegolamonica commented 9 years ago

è giusto che venga creato il file eucookielaw.ini nella directory wp-content/cache. Il file ini viene usato dal file eucookielaw-cache.php per leggere le impostazioni salvate del plugin, prima che venga caricato il DB (ovvero quando viene caricato un contenuto dalla cache.

Tuttavia il plugin dovrebbe funzionare anche con W3TC. Effettuerò le opportune prove per comprendere le cause dell'anomalia in un ambiente controllato. Nel frattempo segno l'issue come bug.

diegolamonica commented 9 years ago

Ciao @contattolab, ho fatto delle prove e sembra che il problema, almeno nell'ambiente di test, si risolva generando la directory custom di EUCookieLaw. Per generarla, dal pannello di controllo bisogna accedere alla funzione "strumenti" e quindi aggiornare (o rigenerare) i contenuti di personalizzazione. Se puoi fare una prova e darmi conferma di risoluzione investigherò ulteriormente sulle cause per cui in assenza della directory personalizzata esistono problemi di compatibilità con W3TC.

contattolab commented 9 years ago

Ok farò delle prove

contattolab commented 9 years ago

fatto, la cartella si crea, ma continua a non funzionare,

nessun problema in ambiente test.

simopa commented 9 years ago

Stesso problema con w3 total cache. Se non loggato un visitatore riceve 404 the requested url /wp-content/cache/page_enhanced/EUCookieCache.php was not found on this server. Svuotando la cache di w3tc riprende a funzionare, ma per poco (presumo fino a quando si ricrei la cache).

Aggiornare (o rigenerare) i contenuti di personalizzazione non mi pare abbia effetto.

Se sono loggato come admin il sito funziona perfettamente.

diegolamonica commented 9 years ago

@simopa , hai provato a salvare nuovamente la configurazione di EUCookieLaw dal pannello di controllo?

simopa commented 9 years ago

@diegolamonica si ho provato. Anche salvare la configurazione di EUCookieLaw ha un effetto temporaneo ma dopo qualche visita sul sito il problema compare di nuovo.

diegolamonica commented 9 years ago

Ho individuato la causa dell'anomalia, con il prossimo aggiornamento (che sarà rilasciato a breve) il problema sarà risolto. Riporto di seguito, per memoria, le cause del problema.

Quando W3 Total Cache esegue il flush delle pagine, rinomina tutti i file della directory /wp-content/cache/page_enhanced/ aggiungendo il suffisso .old. Di conseguenza il file EUCookieCache.php viene rinominato in EUCookieCache.php.old, pertanto quando viene richiesto un file dalla cache di W3TC, il plugin non è più in grado di identificare questo file essenziale, causando un error 404 not found.

Per risolvere il problema è stato intercettato l'hook w3tc_pgcache_flush che viene richiamato prima del flush della cache delle pagine, quindi viene agganciato un nuovo metodo sull'hook w3_redirect tramite il quale vado a rigenerare il file EUCookieCache.php.

In ambiente di test ho fatto delle verifiche forzando la cancellazione dei file dalla cache ed il risultato è sempre quello atteso, ovvero, il file EUCookieCache.php è sempre presente.