辞書翻訳を使用するとCPU使用率が高騰する


解説

Sitecore XPは、辞書翻訳機能を使用して、Sitecoreクライアントでテキストとメッセージを翻訳します。これにより、サイト固有の辞書ドメインを作成して、カスタム翻訳データを保存できます。辞書ドメインは、dictionaryDomain属性を使用してサイトに関連付けられます。例えば:

<site name="website" enableTracking="true" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/home" language="en" database="web" domain="extranet" dictionaryDomain="{856749EF-66B6-4C6A-902F-772AC2D81CEF}" ... />

dictionaryDomain属性には、カスタム翻訳データを保存するSitecoreアイテムのIDを含めることができます。

IDの代わりにアイテム名が使用されている場合、Sitecore XPはデータベース全体をスキャンして、指定された名前のアイテムを見つける必要があります。このようなスキャンはSitecore.Globalization.Translate.Textメソッドが実行されるたびに実行されるため、Sitecore XPとSQL Server側の両方でリソース消費が増加する可能性があります。

解決策

辞書翻訳機能がコンテンツの翻訳に使用されていないことを確認してください。アイテムのバージョン管理を使用して、言語固有のコンテンツを保存してください。Sitecoreクライアントで使用されるカスタムSitecoreアプリケーションのテキストの翻訳には、カスタム辞書ドメインを使用してください。カスタムSitecore構成を確認し、Dictionary Domainアイテムの名前の代わりにIDが使用されていることを確認してください。例えば、以下のように置換します:

変更前:

<site name="Website” … dictionaryDomain="DictionaryDomainName" …/>

変更後:

<site name="Website” … dictionaryDomain="{39526EE9-F08D-494D-B9DC-C5792DF558F3}" …/>