Я нашел какой-то код в сети, и он меня скинул. Посмотрите на код ниже. Вы заметите, только когда Хиты == 1, кеш будет добавлен. После этого объект кеша не обновляется. Напрашивается вопрос, обновляется ли объект при обновлении также автоматически? Ответ здесь заставит меня удалить некоторый код в некоторых из моих классов.
public static bool IsValid( ActionTypeEnum actionType )
{
HttpContext context = HttpContext.Current;
if( context.Request.Browser.Crawler ) return false;
string key = actionType.ToString() + context.Request.UserHostAddress;
var hit = (HitInfo)(context.Cache[key] ?? new HitInfo());
if( hit.Hits > (int)actionType ) return false;
else hit.Hits ++;
if( hit.Hits == 1 )
context.Cache.Add(key, hit, null, DateTime.Now.AddMinutes(DURATION),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Normal, null);
return true;
}
Я бы только предположил, что мне нужно будет добавить строки после оператора if:
if( hit.Hits == 1 )
context.Cache.Add(key, hit, null, DateTime.Now.AddMinutes(10),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Normal, null);
else if (hit.Hits > 1)
{context.Cache.Remove(key);
context.Cache.Add(key, hit, null, DateTime.Now.AddMinutes(10),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Normal, null);
}
Нашли код внизу страницы здесь: http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx?msg=2809164