Sitecore Clear Cache программно - PullRequest
       11

Sitecore Clear Cache программно

2 голосов
/ 15 сентября 2010

Я пытаюсь опубликовать программно в Sitecore.Издательство работает отлично.Но это программно не очищает кэш 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();
  }

Ответы [ 5 ]

5 голосов
/ 20 сентября 2010

В Sitecore 6 класс CacheManager имеет статический метод, который очищает все кэши. Метод ClearAll () устарел.

Sitecore.Caching.CacheManager.ClearAllCaches();
3 голосов
/ 23 сентября 2010

Я получил это от поддержки 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 голосов
/ 20 сентября 2010

Просто короткая заметка в Sitecore 6.3, которая больше не нужна.Кэши очищаются автоматически после изменения на удаленном сервере.Кроме того, если вы работаете в предыдущих выпусках, вместо очистки всех кешей вы можете выполнить частичную очистку кеша.Существует бесплатный компонент с общим исходным кодом, который называется Stager.http://trac.sitecore.net/SitecoreStager Если вам нужно специальное решение, вы можете просто извлечь исходный код оттуда.

2 голосов
/ 15 сентября 2010

Через SDN :

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

if (cache != null) {
  cache.Clear();
}
1 голос
/ 07 февраля 2012

Стандартное решение Sitecore для очистки кэшей (ВСЕХ из них) используется на следующей странице: http://sitecore_instance_here/sitecore/admin/cache.aspx, а код позади выглядит как следующий фрагмент:

foreach (var cache in Sitecore.Caching.CacheManager.GetAllCaches())
    cache.Clear();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...