Attenzione al SetCacheability nelle pagine ASP.NET

Io ci ho appena sbattuto la testa, e magari può salvarvi una brutta notte di carico imprevisto sui server:

per "comandare" la gestione della cache di una pagina web, è possibile impostare l'oggetto Cache dell'oggetto HttpResponse.

Questo si fa col metodo SetCacheability, passandogli uno dei valori dell'enum HttpCacheability.

Questo enum contiene 6 valori:

  • NoCache: nessuno può cachare la pagina
  • Private: la pagina può essere cachate solo sui browser, ma non sui proxy (valore di default)
  • Public: la pagina può essere cachata da tutti (proxy compresi)
  • Server: la pagina è cachata solo sul server, come la NoCache, con la differenze che la pagina è cachata sul server di origine
  • ServerAndNoCache: Server e NoCache insieme
  • ServerAndPrivate: Server e Private insieme

Dove sta il problema?

Tra le cache delle quali si parla è inclusa anche la OutputCache di ASP.NET, cioè la funzionalità nativa per il caching delle pagine e dei controlli ASP.NET: quindi, se mettete NoCache perchè volete essere sicuri che gli utenti del vostro sito abbiano sempre l'ultima versione della pagina, il server non terrà in cache il risultato della pagina, ma la rigenererà tutte le volte.

Se volete invece ottenere entrambi i risultati, dovete impostate la cachabilità a ServerAndNoCache.

posted @ giovedì 14 settembre 2006 15:42

Print

Comments on this entry:

# re: Attenzione al SetCacheability nelle pagine ASP.NET

Left by Alessandro at 14/09/2006 17:19
Gravatar
non vorrei dire cavolate, ma private public etc sono direttive per l'header.
poi dopo c'è anche la cache di asp.net

In pratica dico che puoi generare una pagina che ha nell'header il cache private e abilitare il cache di asp.net

risultato il browser richiederà al server sempre la pagina nuova, il server secondo le politiche di cache gli risponderà con una versione di cache o appena generata

# re: Attenzione al SetCacheability nelle pagine ASP.NET

Left by Simone Chiaretta at 14/09/2006 17:55
Gravatar
Si, sono due cose separate, ma questo enum le gestisce mettendole insieme.
Se tu abiliti la cache di asp.net e metti "NoCache" la direttiva OutputCache viene ignorata
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011