如何从缓存中清除Sitecore项

时间:2016-05-06 21:31:59

标签: sitecore sitecore7 sitecore-workflow

我相信Sitecore正在缓存项目的工作流程值,我需要能够清除它。

方案是我发出ajax请求以确定特定项是否存在以及它是否存在检索其工作流字段值。用户填写表格,他们可以选择保存或提交该表格;当他们提交表单时,它进入工作流状态。但是,即使我切换浏览器,LoiHasNoWorkflow也保留以前的值,除非我再次发布。我有一个方法来清除一些缓存,但我不确定哪个可能实际缓存该字段。

    public static bool ClearCache()
    {
        foreach (DictionaryEntry entry in HttpContext.Current.Cache)
        {
            HttpContext.Current.Cache.Remove((string)entry.Key);
        }

        Context.Database.Engines.TemplateEngine.Reset();
        Context.ClientData.RemoveAll();
        CacheManager.ClearAllCaches();

        return true;
    }

public bool LoiHasNoWorkflow => CBUtility.ClearCache() && string.IsNullOrEmpty(loi?.Fields["__Workflow"].Value);

如何确定项目的__Workflow值无法清除的原因?我甚至可以通过Sitecore UI删除该项目,刷新页面并发出相同的请求,但在项目存在时获取值。

1 个答案:

答案 0 :(得分:0)

实际上问题与缓存无关,而是我自己的错误。我的loi对象是该类中的静态变量,因此在每次刷新页面时都没有清除。这是SO更深层次的解释,使我实现了这一点。实际上学到了更多关于静态变量的知识。

Lifetime of ASP.NET Static Variable