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.