以编程方式从缓存中清除项目的 Sitecore 缓存

问题描述 投票:0回答:1

我想以编程方式清除某个项目的 Sitecore 缓存。我运行了下面的代码。之后,我尝试对已删除的 id 执行 web.GetItem,但仍然得到 null。有什么建议吗?

Database db = new Database("web");

if (ID.IsID(id))
{
    ID itemID = new ID(id);
    
    //clear data cache
    db.Caches.DataCache.RemoveItemInformation(itemID);
    
    //clear item cache
    db.Caches.ItemCache.RemoveItem(itemID);
    
    //clear standard values cache
    db.Caches.StandardValuesCache.RemoveKeysContaining(itemID.ToString());

    //remove path cache
    db.Caches.PathCache.RemoveKeysContaining(itemID.ToString());
}
caching sitecore
1个回答
5
投票

看起来您错过了预取缓存,以下是获取它的方法:

private Cache GetPrefetchCache(Database database)
{
    foreach (var cache in global::Sitecore.Caching.CacheManager.GetAllCaches())
    {
        if (cache.Name.Contains(string.Format("Prefetch data({0})", database.Name)))
        {
            return cache;
        }
    }
}

还有 html 缓存:

private void ClearAllHtmlCaches() 
{
    foreach (var info in Factory.GetSiteInfoList())
    {
        info.HtmlCache.Clear();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.