Что лучший способ состоит в том, чтобы заблокировать кэш в asp.net?

Я знаю при определенных обстоятельствах, таких как длительные процессы, важно заблокировать кэш ASP.NET для предотвращения последующих запросов другим пользователем для того ресурса от выполнения долгого процесса снова вместо того, чтобы поразить кэш.

Каков лучший способ в c# для реализации кэша, привязывающего ASP.NET?

75
задан John Owen 2 September 2008 в 09:42
поделиться

1 ответ

Повторяя слова Павла, я считаю, что это наиболее потокобезопасный способ записи

private T GetOrAddToCache<T>(string cacheKey, GenericObjectParamsDelegate<T> creator, params object[] creatorArgs) where T : class, new()
    {
        T returnValue = HttpContext.Current.Cache[cacheKey] as T;
        if (returnValue == null)
        {
            lock (this)
            {
                returnValue = HttpContext.Current.Cache[cacheKey] as T;
                if (returnValue == null)
                {
                    returnValue = creator(creatorArgs);
                    if (returnValue == null)
                    {
                        throw new Exception("Attempt to cache a null reference");
                    }
                    HttpContext.Current.Cache.Add(
                        cacheKey,
                        returnValue,
                        null,
                        System.Web.Caching.Cache.NoAbsoluteExpiration,
                        System.Web.Caching.Cache.NoSlidingExpiration,
                        CacheItemPriority.Normal,
                        null);
                }
            }
        }

        return returnValue;
    }
13
ответ дан 24 November 2019 в 11:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: