2

我正在尝试在 Sitecore 中以编程方式发布。发布工作正常。但是以编程方式这样做不会清除站点核心缓存。以编程方式清除缓存的最佳方法是什么?

我正在尝试使用登台模块附带的网络服务。但是我收到了错误请求异常(异常:远程服务器返回了意外响应:(400)错误请求。)。我试图在客户端配置文件上增加服务接收超时和发送超时,但这并没有解决问题。任何指针将不胜感激?

我正在使用以下代码:

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();
  }
4

5 回答 5

5

在 Sitecore 6 中,CacheManager 类有一个静态方法可以清除所有缓存。ClearAll() 方法已过时。

Sitecore.Caching.CacheManager.ClearAllCaches();
于 2010-09-20T15:26:27.383 回答
3

只是一个简短的说明,在 Sitecore 6.3 中,不再需要它了。在远程服务器上发生更改后,缓存会自动清除。此外,如果您使用的是以前的版本,则可以进行部分缓存清除,而不是清除所有缓存。有一个名为 Stager 的免费共享源组件可以做到这一点。 http://trac.sitecore.net/SitecoreStager 如果您需要自定义解决方案,您可以简单地从那里提取源代码。

于 2010-09-20T19:21:10.640 回答
3

我从 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();
于 2010-09-23T14:05:22.573 回答
2

通过SDN

HtmlCache cache = CacheManager.GetHtmlCache(Context.Site);

if (cache != null) {
  cache.Clear();
}
于 2010-09-15T03:28:25.373 回答
2

以下页面使用了 Sitecore 提供的用于清理缓存(所有缓存)的开箱即用解决方案:http://sitecore_instance_here/sitecore/admin/cache.aspx后面的代码如下所示:

foreach (var cache in Sitecore.Caching.CacheManager.GetAllCaches())
    cache.Clear();
于 2012-02-06T20:57:56.943 回答