Esiste un modo per disattivare la memorizzazione nella cache del browser client per siti Web specifici?


10

Questa è una domanda agnostica del browser ma stiamo testando con IE9.

Una delle app Web che i nostri utenti visitano viene memorizzata nella cache in modo casuale e le modifiche non vengono visualizzate quando dovrebbero. Nessun altro sito ha questo problema e abbiamo lavorato con il fornitore che afferma che non sta succedendo a nessun altro. Se utilizziamo la barra degli strumenti dello sviluppatore e selezioniamo "forza aggiornamento dal server" tutto si aggiorna correttamente.

Invece di risolvere veramente il problema, il nostro pensiero è aggirarlo disabilitando la cache per questo sito specifico. Tuttavia, non sappiamo come.

Risposte:


10

L'unico modo corretto di disabilitare la memorizzazione nella cache del browser è tramite le intestazioni HTTP dalla stessa webapp. L'intestazione HTTP "Cache-Control" da sola dovrebbe essere sufficiente per qualsiasi browser post-anno 2000. Ma per una protezione aggiuntiva il server può emettere insieme le intestazioni HTTP "Cache-Control" e HTTP 1.0 "Expires" .

Un modo hack'ish ma a volte visto di gestire l'invalidazione della cache è una stringa "cachebuster" negli URL dal server. Il cachebuster è spesso basato sul timestamp e viene aggiunto come stringa di querystring a ciascun LINK HTML per rendere l'URL unico e utilizzato una sola volta. Qualcosa del genere http://example.org/filename.html?cb=<timestamp+random_value>. Questo è brutto e non fa nulla che le intestazioni HTTP non facciano molto meglio. Ma potrebbe essere usato come hack per un pubblico limitato (fx su una Intranet) o come ulteriore livello di protezione insieme alle intestazioni HTTP appropriate.

AFAIK non c'è modo di disabilitare selettivamente la memorizzazione nella cache per un singolo sito solo da Internet Explorer. Una soluzione (dannatamente complicata) potrebbe essere quella di installare la cache di Varnish come cache intermedia sulla LAN, impostare Internet Explorer per utilizzare Varnish come proxy HTTP e utilizzare il linguaggio VCL su Varnish per riscrivere le intestazioni HTTP solo per questo sito specifico.

Onestamente, penso che il tuo venditore stia commettendo un errore qui. Suggerirei di installare Fiddler2 per IE o Firebug per Firefox e di esaminare le intestazioni HTTP effettive inviate dalla webapp. Correlalo con il tutorial sulla memorizzazione nella cache di Mark Nottingham a cui ho già collegato sopra - suppongo che le intestazioni consentano la memorizzazione nella cache, o almeno non vietino espressamente la memorizzazione nella cache.


0

Assicurati di impostare le intestazioni di scadenza appropriate. Se si inserisce il tempo passato, il contenuto non verrà memorizzato nella cache. Controllare l'ora / data sulla workstation su cui è in esecuzione IS9. Vedi anche: http://www.mnot.net/cache_docs/


0

Se non è possibile modificare il contenuto del sito Web in questione, è possibile utilizzare un server proxy per modificare il contenuto lungo il percorso per il browser. Ciò ti consentirebbe di modificare le intestazioni di scadenza.


0

Se il sito Web consente di connettersi tramite HTTPS, a seconda del browser in uso, è possibile disabilitare la memorizzazione nella cache delle pagine crittografate.

In IE, questo può essere fatto in questo modo:

Puoi ricontrollare le impostazioni di Internet Explorer in Opzioni Internet-> Avanzate-> Sicurezza-> Non salvare pagine crittografate su disco.


Ha chiesto una soluzione agnostica per il browser.
Mircea Vutcovici,

1
@Mircea Questa è una soluzione agnostica del browser. Ho appena fornito un esempio gratuito usando IE. Molti altri browser hanno un'opzione per disabilitare la memorizzazione nella cache SSL, ma le impostazioni si trovano in posizioni diverse.
JeffG,

0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Potresti prendere in considerazione l'utilizzo di chiavi casuali nella barra degli URL, questo eviterà anche la memorizzazione nella cache all'interno del browser.


Questo funzionerebbe, se GollyJer avesse la possibilità di modificare il sito web. Capisco che non si basa sulla sua domanda.
JeffG,

Per essere precisi, i "tasti casuali" non impediscono efficacemente la memorizzazione nella cache. Il browser e le cache intermedie possono comunque archiviare la risposta sul disco. Ma la prossima volta che viene richiesto lo stesso file, la chiave casuale renderà l'URL diverso e quindi la versione memorizzata nella cache su disco non verrà utilizzata. Una nuova rappresentazione verrà scaricata dal server ed eventualmente memorizzata nella cache su disco. Inoltre, il tag META PRAGMA è obsoleto e non deve essere utilizzato: si consiglia di utilizzare le intestazioni HTTP Expires e Cache-Control.
Jesper M,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.