O ASP.Net oferece um esquema de Cache bastante interessante que podemos utilizar em nossos projetos, permitindo uma maior escalabilidade de nossas aplicações e um menor uso do banco de dados. Veja mais em ASP.NET Caching.

Temos a classe Cache e ainda a opção de “cachear” o resultado (ou output) de uma página web, definindo também o tempo que ela vai valer, neste caso usando a tag OutputCache.

Eu já vi isto também no PHP, com o Smarty, simplesmente maravilhoso :-)

Mas o que quero explicar neste artigo é que na maioria das vezes vamos adicionando caches e mais caches na página e se você não se organizar, vai chegar um ponto em que nada mais vai ficar atualizado, porque estarão no cache.

Então, o que fazer nestes casos?

1 – Ou você se policia para que em algum momento exclua o cache, utilizando:

System.Web.HttpContext.Current.Cache.Remove(“chave”);
2 – Ou você pode criar uma página que limpa todo o cache de sua aplicação, automaticamente.

  1. string currentKey= “”;
  2. System.Collections.IDictionaryEnumerator cacheContents = System.Web.HttpContext.Current.Cache.GetEnumerator();
  3. while (cacheContents.MoveNext()) {
  4.         currentKey = cacheContents.Key.ToString();
  5.        System.Web.HttpContext.Current.Cache.Remove(curren tKey);
  6. }

Bom, as duas opções podem ser consideradas, mas a que mais recomendo é a primeira, pois a segunda tem que ser utilizada apenas em último caso, quando não há outra alternativa.

A grosso modo, é o modo “gambiarra” de resolver hehehe

Fonte: http://www.codigofonte.net/dicas/aspnet/864_removendo-o-cache-de-todos-os-componentes-no-asp-net