Back to top

Autore Topic: [RISOLTO] Disabilitare la Cache solo per uno specifco URL  (Letto 3394 volte)

Offline Daniele Pinna

  • Appassionato
  • ***
  • Post: 595
  • Sesso: Maschio
    • Mostra profilo
Salve a tutti :-)
Sono alle prese con una estensione per Agenzie Immobiliari (non la nomino perché commerciale) che fra le varie funzioni ha la possibilità di "Confornto"... si aggiungono due o tre immobili e si procede al confronto delle caratteristiche.

La cosa particolare è che quando clicco su "Confronta" non mi visualizza la pagina aggiornata... ma la situazione preceente (ad esempio dove nella lista avevo incluso un immobile differente). Il problema lo risolvo facendo un semplice refresh della pagina (F5).
Il supporto (molto disponibile) pare non aver capito bene il problema (o forse a loro non lo fa)...
Sto cercando quindi di risolvere il problema in autonomia...

Un primo approccio è stato quello di cercare una esclusione o una scadenza breve nella cache per un percorso predefinito da impostatre su .htaccess. C'è qualcosa ma riguarda solo le estensioni e non i singoli URL.
Ho trovato quindi il file PHP del componente che genera la pagina di confronto e ho aggiunto del codice ($document->setMetaData ) in modo da ottenere le seguenti righe nel header:


Codice: [Seleziona]
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />


Purtroppo non cambia nulla...

Sto sbagliando qualcosa?
Devo usare del codice differente?

NOTA:
- la cache di Joomla! è disabilitata
- sul server (è un mio VPS) non viene usato Cloudfire o simili

Ringrazio Anticipatamente per le Risposte :-)
« Ultima modifica: 23 Set 2018, 13:12:21 da Daniele Pinna »

Offline tonicopi

  • Global Moderator
  • Instancabile
  • ********
  • Post: 12790
  • Sesso: Maschio
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #1 il: 16 Set 2018, 00:01:20 »
Ciao Daniele, puoi nominare pure l'estensione anche se commerciale perchè non vige più quel divieto.Cmq io proverei a far fare subito un refresh automatico a quella pagina dato che con quello il problema sembra risolversi  ;D
joomlacsszengarden.com = il giardino dei css di Joomla!
L'attesa del piacere è essa stessa... piacere!

Offline giusebos

  • Fuori controllo
  • *
  • Post: 21748
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #2 il: 17 Set 2018, 11:09:21 »
nelle impostazioni della cache vi è la possibilità di escludere determinate URL
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline Daniele Pinna

  • Appassionato
  • ***
  • Post: 595
  • Sesso: Maschio
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #3 il: 17 Set 2018, 13:10:30 »
Ciao Daniele, puoi nominare pure l'estensione anche se commerciale perchè non vige più quel divieto.
Ah... ecco, non lo sapevo :-)Sono contento che non ci sia più questa restrizione...
Cmq l'estensione è OS Property...

Citazione
Cmq io proverei a far fare subito un refresh automatico a quella pagina dato che con quello il problema sembra risolversi  ;D
Ecco... non avevo pensato a questo... oggi provo con questo sistema :-)Grazie!!!

Offline Daniele Pinna

  • Appassionato
  • ***
  • Post: 595
  • Sesso: Maschio
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #4 il: 17 Set 2018, 13:12:17 »
nelle impostazioni della cache vi è la possibilità di escludere determinate URL
Si avevo già provato ad impostare l'URL che non va memorizzato in cache nel plugin presente di default in Joomla! e anche usando una estensione aggiuntiva... ma non risolve :-(
Grazie cmq per il suggerimento :-)

Offline giusebos

  • Fuori controllo
  • *
  • Post: 21748
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #5 il: 17 Set 2018, 14:32:26 »
fai attenzione che funziona solo se la cache è ativata ed è configurara dal pannello di controllo scegliendo il tipo di cache.
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline Daniele Pinna

  • Appassionato
  • ***
  • Post: 595
  • Sesso: Maschio
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #6 il: 22 Set 2018, 21:07:54 »
fai attenzione che funziona solo se la cache è ativata ed è configurara dal pannello di controllo scegliendo il tipo di cache.
Non ero sicurissimo di aver attivata la cache, quindi ho riprovato ad attivarla sia nel plugin (con la pagina impostata) sia da Configurazione Globale, senza però risolvere.
Però come ha suggerito tonicopi ho inserito un refresh nella pagina (modificando il sorgente) con il seguente codice
Codice: [Seleziona]
$document->setMetaData("refresh", "0", $attribute = "http-equiv");che alla fine risulta una volta interpretata la pagina:
Codice: [Seleziona]
<meta http-equiv="refresh" content= "0" />La pagina si riavvia in continuazione... quindi ho aumentato a 10 secondi e in effetti funziona. Ma è una scocciatura e certamente non va bene il riavvio ogni 10 secondi. Però è già una indicazione che "probabilmente" la strada è giusta.
Cercando varie soluzioni, anche con Script Java di Refresh, nessuno funziona (proprio non partono... forse per errore mio).Decido di adattarne una di queste soluzioni al PHP e nello stesso punto in cui avevo inserito il codice per il refresh, inserisco questo codice PHP

Codice: [Seleziona]
        $osp_time=time();    //Leggo il Tempo
       
        if (isset($_COOKIE['osp_reload'])) {  //verifico se il cookie esiste
           
            $osp_time_cookie = $_COOKIE['osp_reload']; //Recupero il valore del cookie
            $osp_time_cookieFix = ($osp_time_cookie + 10);  //aggiungo 10 secondi al valore letto dal cookie
            setcookie("osp_reload", $osp_time, time()+3600);    //Lo un nuovo valore nei cookie

            if ($osp_time_cookieFix > $osp_time) {  //Verifico il valore del cookie è superiore di 10 secondi rispetto a quello attuale
                echo "AAA Cookie= " . $osp_time_cookieFix . " -> Time = " . $osp_time . " -> Diff= " . ($osp_time - $osp_time_cookieFix);
                $document->setMetaData("refresh", "0", $attribute = "http-equiv");    //Inserisco l'struzione per ricaricare la pagina               
                } else {
                echo "BBB Cookie= " . $osp_time_cookieFix . " -> Time = " . $osp_time . "->  Diff= " . ($osp_time - $osp_time_cookieFix);
            }
        } else {    // il cookie non esiste, lo scrivo e faccio comunque il refresh
            setcookie("osp_reload", $osp_time, time()+3600);    //Lo salvo nei cookie
            echo "CCC Cookie= " . $osp_time_cookieFix . " -> Time = " . $osp_time . "-> Diff= " . ($osp_time - $osp_time_cookieFix);
            $document->setMetaData("refresh", "0", $attribute = "http-equiv");    //Inserisco l'struzione per ricaricare la pagina               
        }
   

In sintesi:- leggo il tempo attuale
- leggo il tempo memorizzato nei cookie (tempo precedente)
- se il tempo memorizzato nei cookie + 10 secondi è superiore al tempo attuale ricarico la pagina, altrimenti no.
Il problema è che "grazie" alla cache tutti quei valori rimangono gli stessi (lo si nota proprio per gli echo che visualizzo)


Ho provato anche una variante inserendo questo
Codice: [Seleziona]
$document->setMetaData("refresh", "0;URL=?$osp_time", $attribute = "http-equiv");Aggiunge qualcosa di variabile all'URL e pensavo in quel modo di fregare la cache, ma niente... il valore di $osp_time non varia fino a quando non fa un vero e proprio riavvio :-\




Offline Daniele Pinna

  • Appassionato
  • ***
  • Post: 595
  • Sesso: Maschio
    • Mostra profilo
Re:Disabilitare la Cache solo per uno specifco URL
« Risposta #7 il: 23 Set 2018, 13:12:08 »
RISOLTO!!!  ;D ;D ;D
Cercando una soluzione sono arrivato ad una pagina che indicava come gestire la scadenza della cache con PHP
Più o meno con queste indicazioni:

Codice: [Seleziona]
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Expires: on, 01 Jan 1970 00:00:00 GMT");

Chiaramente viene male inserirle così brutalmente su Joomla! e occorre usare la funzione SetHeader

Codice: [Seleziona]
JResponse::setHeader('Pragma: ', 'public',true);
JResponse::setHeader('Cache-Control: ','public',true);
JResponse::setHeader('Expires: ', gmdate('D, d M Y H:i:s', time()+(5)) . ' GMT',true);    //scadenza dopo 5 secondi dalla generazione
Invece di lasciare una data moooolto vecchia (1970) prima che che i browser la rifiutiono per qualche motivio, ho deciso di calcolare al volo la data e aggiungere semplicemente 5 secondi per stabilire la data di scadenza.

Dato che ho citato un componente specifico, OS Property, segnalo che il file da modificare è il seguente:
Codice: [Seleziona]
/components/com_osproperty/classes/compare.phpsotto questa riga
Codice: [Seleziona]
$document->setTitle($configClass['general_bussiness_name']." - ".JText::_('OS_COMPARE_PROPERTIES'));
Chiaramente ora segnalo all'autore... questa soluzione... può essere che venga recepita :-)

In ogni caso ringrazio tutti per l'aiuto :-D




Offline tonicopi

  • Global Moderator
  • Instancabile
  • ********
  • Post: 12790
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] Disabilitare la Cache solo per uno specifco URL
« Risposta #8 il: 24 Set 2018, 10:12:46 »
Grazie Daniele, talvolta ho usato OS Property (ma non ho mai usato il confronto) e mi tengo annotata questa cosa che potrebbe tornarmi utile!
« Ultima modifica: 24 Set 2018, 10:18:05 da tonicopi »
joomlacsszengarden.com = il giardino dei css di Joomla!
L'attesa del piacere è essa stessa... piacere!

Offline Daniele Pinna

  • Appassionato
  • ***
  • Post: 595
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] Disabilitare la Cache solo per uno specifco URL
« Risposta #9 il: 24 Set 2018, 10:38:40 »
Tieni presente che per far funzionare il confronto ho dovuto far intervenire il supporto e dargli l'accesso al sito...
Non so che modifiche abbia fatto per farlo funzionare :-D


 



Web Design Bolzano Kreatif