Ho un sito ASP.Net (capita di essere MVC, ma non è rilevante qui) con poche pagine che mi piacerebbe memorizzare nella cache davvero bene.Impostazione delle intestazioni della cache HTTP e dei parametri del server ottimali in ASP.Net MVC e IIS 7.5
In particolare mi piacerebbe realizzare:
- uscita nella cache sul server per 2 ore.
- se il contenuto del file sulle modifiche del server, che cache di output deve essere lavata per quella pagina
- nella cache del browser per 10 minuti (cioè non hanno nemmeno chiedere al server se è così fresco)
- quando il il browser fa una richiesta successiva effettiva, mi piacerebbe che utilizzasse gli etags, in modo che il server possa restituire un 304 se non modificato.
(nota - valori temporali sopra sono esempi indicativi solo)
- 1) e 2) posso ottenere da Response.Cache.SetCacheability (HttpCacheability.Server)
- so 3) può essere raggiunto usando max-age e cache-control: private
- Posso emettere etags con Response.Cache.SetETagFromFileDependencies();
ma non riesco a ottenere tutte le di queste cose per lavorare insieme. Ecco cosa ho:
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetETagFromFileDependencies();
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetMaxAge(TimeSpan.FromSeconds(60 * 10));
È lo scenario che voglio possibile? In particolare:
- i browser possono fare sia 3) sia 4) in questo modo? Quando Firefox emette una nuova richiesta dopo che scade nella cache locale, effettivamente invia l'etag con cui il server ha risposto prima, ma ottengo una risposta di 200.
- impostazione delle variabili come sopra, dove dovrei impostare la durata della cache di output?
Grazie per eventuali suggerimenti!
"Firefox ... invia effettivamente l'etag" - intendi in un * If-None-Match *? E in questo caso particolare, hai emesso l'ETag manualmente usando 'SetETagFromFileDependencies()'? – bzlm
corretto e sì. – Nik
In seguito, come è stato risolto? E come stava esattamente fallendo? – harpo