Santiago Cepas
Santiago Cepas

Reputation: 4094

Centralized way to empty the Cache object in asp.net

I have to maintain an old asp.net application, and need to disable all access to the Cache object for debugging purposes. There are hundreds of pages that use the structure:

if (Cache["myobject"] != null)
{
   //get data from the cache
   //...
}
else
{
   //go to the DB, load the cache and send it to the client
}

I know I should refactor this code but, in the meantime, do you know of any simple and centralized way to empty (or disable) the Cache object?

Upvotes: 3

Views: 610

Answers (3)

Locksfree
Locksfree

Reputation: 2702

If you just want to clear the cache once, you can use this:

   foreach ( System.Collections.DictionaryEntry entry in HttpContext.Current.Cache )
        HttpContext.Current.Cache.Remove( entry.Key as String );

Otherwise @Anton Gogolev solution looks good to prevent new entries.

Upvotes: 2

dove
dove

Reputation: 20674

I haven't used it but this helper might give you what you're after.

Upvotes: 3

Anton Gogolev
Anton Gogolev

Reputation: 115691

Not sure if it will be of any help, but you can play with cache settings and set, say, privateBytesLimit to 1 and privateBytesPollTime to 00:00:01. My guess is that ASP.NET should basically remove all entries as soon as they're added. However, this might not be the case.

Upvotes: 3

Related Questions