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["myobje开发者_如何学JAVAct"] != 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?
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.
I haven't used it but this helper might give you what you're after.
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.
精彩评论