Domanda

Ho provato molti modi per ottenere IE8 per ricaricare una pagina ma non è riuscito. IE continua a usarlo di cache interna senza chiedere il server web per esso.

Sto inviando le seguenti intestazioni dal mio webserver:

Response.Add(new StringHeader("Expires", DateTime.UtcNow.AddYears(-1).ToString("r")));
Response.Add(new StringHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"));
Response.Add(new StringHeader("Pragma", "no-cache"));
Response.Add(new StringHeader("Last-Modified", DateTime.UtcNow.ToString("r")));

E 'solo una delle tante combinazioni che ho provato.

Come faccio a fare IE recuperare la pagina ogni volta che (senza costringere i miei utenti di disattivare la memorizzazione nella cache all'interno di IE)?

È stato utile?

Soluzione

Il modo corretto è quello di inviare queste intestazioni HTTP nella risposta:

Pragma: no-cache
Expires: -1
Cache-Control: no-cache, no-store

Il loro utilizzo rende il lavoro tutto in IE senza altre modifiche.

Altri suggerimenti

Il modo più semplice è quello di aggiungere un parametro con un compressa data / ora sulla stringa di query ... Questo rende l'aspetto di un intero nuova pagina per i browser.

Solo un rapido aggiornamento , se i dati di invio al server, poi IE ignorerà la cache e caricare i nuovi dati. Tuttavia, se si sta solo l'emissione di richieste GET, poi IE sta andando a guardare l'URL ed è impostazioni per determinare se tirare dalla cache o effettivamente andare al server per i dati.

Ora, se l'utente ha la "Ricerca versioni più recenti delle pagine memorizzate" impostata su Mai, quindi non c'è niente che possa fare a corto di aggiungendo un valore alla stringa di query. Vedere KB263070 per informazioni dettagliate da MS su tali opzioni. Un rapido sguardo attraverso Microsoft Answers mostra un gran numero di persone che sono state a poco a questo. La soluzione che viene sempre dato è per l'utente a modificare le impostazioni della cache.

Quindi, per voi, la soluzione sta per essere a (a livello di complessità)

  1. Append un valore stringa di query altamente variabile
  2. informare gli utenti che devono cambiare il "Ricerca versioni più recenti" su entrambi i All'apertura della pagina o automaticamente.
  3. cambiare il tuo link per causare spalle postali. (Bleah)

Un certo numero di applicazioni scegliere sia il punto 2 o punto 1. Il motivo è che il 2 ha il minimo impatto sulla base di codice, mentre negli articoli 1 ha il minor impatto sugli utenti.

Se questo è un amministratore del sito, allora direi andare con l'opzione 2, come si dovrebbe avere una discreta quantità di leva finanziaria su impostazioni del desktop degli utenti.

Speriamo che ho capito la tua domanda, forse dare una prova, questa sarà chiaro:

   List<string> keys = new List<string>();
    IDictionaryEnumerator enumerator = Cache.GetEnumerator();
    while (enumerator.MoveNext())
    {
        keys.Add(enumerator.Key.ToString());
    }

    foreach(string key in keys)
    {
        Cache.Remove(key);
    }

se questo deve essere su più pagine si potrebbe mettere in una pagina master (o utilizzare qualche altro refactoring).

C'è anche la direttiva OutputCache, se quanto sopra non è quello che stai cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top