我正在尝试在Sitecore中以编程方式发布。出版工作正常。但以编程方式执行此操作并不会清除sitecore缓存。以编程方式清除缓存的最佳方法是什么?
我正在尝试使用暂存模块附带的Web服务。但是我收到了一个错误的请求异常( 异常:远程服务器返回了意外的响应:(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();
}
答案 0 :(得分:5)
在Sitecore 6中,CacheManager类有一个静态方法可以清除所有缓存。 ClearAll()方法已过时。
Sitecore.Caching.CacheManager.ClearAllCaches();
答案 1 :(得分:3)
只需在Sitecore 6.3中快速注释,就不再需要了。在远程服务器上发生更改后,将自动清除缓存。 此外,如果您使用的是先前版本,则可以执行部分缓存清除,而不是清除所有缓存。 有一个名为Stager的免费共享源组件可以做到这一点。 http://trac.sitecore.net/SitecoreStager 如果您需要自定义解决方案,只需从中提取源代码即可。
答案 2 :(得分: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();
答案 3 :(得分:2)
通过SDN:
HtmlCache cache = CacheManager.GetHtmlCache(Context.Site);
if (cache != null) {
cache.Clear();
}
答案 4 :(得分:1)
以下页面使用了Sitecore为清理缓存(所有这些)提供的开箱即用的解决方案:http://sitecore_instance_here/sitecore/admin/cache.aspx
,后面的代码如下所示:
foreach (var cache in Sitecore.Caching.CacheManager.GetAllCaches())
cache.Clear();