代码之家  ›  专栏  ›  技术社区  ›  muruge

以编程方式清除SiteCore缓存

  •  2
  • muruge  · 技术社区  · 16 年前

    我正在尝试在SiteCore中以编程方式发布。出版工作很好。但是,以编程方式这样做并不能清除SiteCore缓存。以编程方式清除缓存的最佳方法是什么?

    我正在尝试使用登台模块附带的WebService。但我收到了一个错误的请求例外( 异常:远程服务器返回意外响应:(400)错误请求。 )我尝试在客户端配置文件上增加服务receiveTimeout和sendTimeout,但这并没有解决问题。有什么建议值得赞赏吗?

    我使用以下代码:

    CacheClearService.StagingWebServiceSoapClient client = new CacheClearService.StagingWebServiceSoapClient();
    CacheClearService.StagingCredentials credentials = new CacheClearService.StagingCredentials();
    
    credentials.Username = "sitecore\adminuser";
    credentials.Password = "***********";
    credentials.isEncrypted = false;
    
    bool s = client.ClearCache(true, dt, credentials);
    

    我正在使用以下代码进行发布。

     Database master = Sitecore.Configuration.Factory.GetDatabase("master");
     Database web = Sitecore.Configuration.Factory.GetDatabase("web");
    
     string userName = "default\adminuser";
    
     Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(userName, true);
    
     user.RuntimeSettings.IsAdministrator = true;
    
     using (new Sitecore.Security.Accounts.UserSwitcher(user))
     {
    
         Sitecore.Publishing.PublishOptions options = new Sitecore.Publishing.PublishOptions(master, web,
         Sitecore.Publishing.PublishMode.Full, Sitecore.Data.Managers.LanguageManager.DefaultLanguage, DateTime.Now);
    
         options.RootItem = master.Items["/sitecore/content/"];
         options.Deep = true;
         options.CompareRevisions = true;
         options.RepublishAll = true;
         options.FromDate = DateTime.Now.AddMonths(-1);
    
         Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(options);
         publisher.Publish();
      }
    
    5 回复  |  直到 9 年前
        1
  •  5
  •   Bartłomiej Mucha    13 年前

    在SiteCore6中,cacheManager类具有一个将清除所有缓存的静态方法。clearall()方法已过时。

    Sitecore.Caching.CacheManager.ClearAllCaches();
    
        2
  •  3
  •   Alex Shyba    16 年前

    在SiteCore6.3中,这只是一个简短的说明,不再需要了。在远程服务器上发生更改后,将自动清除缓存。 此外,如果您使用的是早期版本,那么您可以执行部分缓存清除,而不是清除所有缓存。 有一个叫做stager的免费共享源组件可以做到这一点。 http://trac.sitecore.net/SitecoreStager 如果您需要一个定制的解决方案,您可以简单地从中提取源代码。

        3
  •  3
  •   Bartłomiej Mucha    13 年前

    我是从SiteCore支持部门得到的。它清除所有缓存:

    Sitecore.Context.Database = this.WebContext.Database;
    Sitecore.Context.Database.Engines.TemplateEngine.Reset();
    Sitecore.Context.ClientData.RemoveAll();
    Sitecore.Caching.CacheManager.ClearAllCaches();
    Sitecore.Context.Database = this.ShellContext.Database;
    Sitecore.Context.Database.Engines.TemplateEngine.Reset();
    Sitecore.Caching.CacheManager.ClearAllCaches();
    Sitecore.Context.ClientData.RemoveAll();
    
        4
  •  2
  •   Kristian Nissen    11 年前

    通过 SDN :

    HtmlCache cache = CacheManager.GetHtmlCache(Context.Site);
    
    if (cache != null) {
      cache.Clear();
    }
    
        5
  •  1
  •   Bartłomiej Mucha    13 年前

    以下页面使用SiteCore提供的开箱即用解决方案来清理缓存(所有缓存): http://sitecore_instance_here/sitecore/admin/cache.aspx 代码隐藏看起来像下面的代码片段:

    foreach (var cache in Sitecore.Caching.CacheManager.GetAllCaches())
        cache.Clear();
    
    推荐文章