2009-07-07 3 views
0

우리는 내가 준비 모듈에 의해 호출 될 슬레이브 서버에 페이지를 만들려면 1 CMS와 3 개 슬레이브 서버 백그라운드 프로세스에 Sitecore 검색 색인 및 링크 데이터베이스를 다시

와 단계별 환경을 모든 색인 및 링크 데이터베이스를 다시 작성하는 성공적인 게시.

은 내가 사용할 수 있습니다 알고

Globals.LinkDatabase.Rebuild(Factory.GetDatabase("web")); 

링크 데이터베이스를 다시 할 수 있습니다.

사이트 코드 컨텍스트에 액세스 할 수있는 별도의 프로세스에서 위의 코드를 얻는 방법과 웹 데이터베이스의 모든 인덱스를 다시 작성하는 방법 (별도의 백그라운드 스레드에서 다시 수행).

덕분에

답변

2

내가 Sitecore와 전에이 문제에 건너와 약간 다른 approch했다했습니다. 스테이징 모듈이 호출하는 페이지 대신 publish : end 이벤트를 두드리고 사용자 정의 핸들러를 추가하여 링크 데이터베이스를 다시 작성합니다.

<event name="publish:end"> 
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
     <sites hint="list"> 
      <site>website</site> 
     </sites> 
    </handler> 
    <handler type="Sitecore.EventHandlers.CredentialCacheClearer, Sitecore.EventHandlers" method="ClearCache"> 
     <sites hint="list"> 
      <site>website</site> 
     </sites> 
    </handler> 

    // Custom Publish Action Below 
    <handler type="Customized.Publish.LinkDatabase, Customized" method="Process"/> 
</event> 
namespace Customized.Publish 
{ 
    public class LinkDatabase 
    { 
     /// <summary> 
     /// Rebuild the web link database. 
     /// </summary> 

     public void Process() 
     { 
      // Web db 
      Sitecore.Globals.LinkDatabase.Rebuild(Sitecore.Configuration.Factory.GetDatabase("web")); 
     } 

     /// <summary> 
     /// For invoking as an event, typically publish:end. 
     /// </summary> 
     public void Process(object sender, EventArgs args) 
     { 
      this.Process(); 
     } 
    } 
}