CacheDependancy для нескольких кэшированных элементов - PullRequest
1 голос
/ 14 июля 2010

Я хотел бы иметь элемент в ASP.NET CacheObject, который, если он будет изменен, будет удален ряд зависимых элементов

Итак. В запросе

  1. Если появится запрос и он существует в кеше, удалите корневой объект, все зависимости тоже будут удалены.
  2. Проверьте наличие корневого объекта в кеше, если он не существует, добавьте его
  3. Добавитьдругие объекты в кеш с зависимостью от корневого объекта

Когда я это делаю, я получаю сообщение об ошибке "An attempt was made to reference a CacheDependency object from more than one Cache entry"

Я вижу, что вы можете сделать AggregateCacheDependency для применениямного зависимостей от одного кешируемого элемента, но кажется, что вы не можете сделать это наоборот.

Кто-нибудь нашел способ сделать это?

вот некоторый код, это не то, что я на самом деле храню, но он представляет ту же задачу

public class HomeController : Controller
{
    private const string ROOT_KEY = "ROOT";

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {   
        base.Initialize(requestContext);

        if(Request.QueryString["clearcache"]!=null){
            // removed the root, hopefully removing all dependents
            HttpContext.Cache.Remove(ROOT_KEY);
        }

        if (HttpContext.Cache[ROOT_KEY] == null)
        {
            // create the root entry
            HttpContext.Cache[ROOT_KEY] = string.Empty;
        }

        if(HttpContext.Cache[Request.Url.AbsolutePath]==null){

            // add the url if not already added
            HttpContext.Cache.Insert(
                Request.Url.AbsolutePath, string.Empty, 
                new CacheDependency(null, new []{ROOT_KEY}));
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

Приведенный выше код работает, ключ каждый раз создавал новую CacheDependency В непсевдокоде, который я пытался использовать один и тот же объект, это вызывало описанную ошибку.

@ Adeel & Jaroslav спасибо за ответы в любом случае

0 голосов
/ 24 сентября 2011

Проблема множественных недействительности одного события заключается в том, что доступные в настоящее время кэши не имеют собственной или эффективной работы.Как автор TagCache , я приглашаю вас попробовать его и посмотреть, будет ли это лучшим выбором в вашем сценарии.

...