如何从缓存中清除Sitecore项



我相信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删除该项,刷新页面,并发出相同的请求,但在该项确实存在时获取值。

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

ASP.NET静态变量的生存期

最新更新