マイ アイテム機能におけるパフォーマンスの問題


説明

コンテンツ エディタまたはエクスペリエンス エディタの「マイ アイテム」ダイアログ ボックスは、現在のユーザーがロックされているアイテムを検索し、表示するための機能です。これを実施するには、コンテンツ ツリー全体を検索する必要があります。時間の経過とともにソリューション内のコンテンツの容量が増加し、この操作により多くの時間がかかるようになります。

解決策

Sitecore Platformアーキテクチャでは、特定のフィールド値を持つすべてのアイテムを、いくつかの方法で検索することが可能です。

要約

Sitecoreアーキテクチャが提供する各アプローチには、それぞれに利点と欠点があります。

解決策1(対象製品:Sitecore CMSバージョン7.2~XPバージョン7.5)

  1. Sitecore.Support.419438.dllアセンブリをダウンロードし、\binフォルダに格納します。
  2. Sitecore.Support.419438.configファイルをダウンロードし、\App_Config\Include フォルダに格納します。

この修正プログラムは、Quick Searchインデックスを維持する場合のみ適用することができます。インデックス更新の間隔が「00:00:00」に設定されていないことを確認してください。

<-- INDEX UPDATE INTERVAL
Gets the interval between the IndexingManager checking its queue for pending actions.
Default value: "00:05:00" (5 minutes)
-->
<setting name="Indexing.UpdateInterval" value="00:05:00 />"

解決先2(対象製品:Sitecore CMSバージョン7.2~XPバージョン8.1 Update-2)

  1. Sitecore.Support.419438.dllアセンブリをダウンロードし、\binフォルダに格納します。
      • Sitecore CMS 7.2 ~ XP 8.0の場合:
           • Lucene:Sitecore.Support.419438.dll
           • Solr:Sitecore.Support.419438.dll
      • Sitecore XP 8.1の場合:
           • Lucene:Sitecore.Support.419438.dll
           • Solr:Sitecore.Support.419438.dll
  2. Sitecore.Support.419438.configファイルをダウンロードし、\App_Config\Includeフォルダに格納します。
      • Sitecore CMS 7.2 ~ XP 8.0の場合:
           • Lucene:Sitecore.Support.419438.config
           • Solr:Sitecore.Support.419438.config
      • Sitecore XP 8.1の場合: 
           • Lucene:Sitecore.Support.419438.config
           • Solr:Sitecore.Support.419438.config
      • Sitecore XP 8.0以降の場合:
    1) Sitecore.Support.131964.dll アセンブリをダウロードし、\bin フォルダに格納します。
    2)Sitecore.Support.131964.configファイルをダウンロードし、\App_Config\Includeフォルダに格納します。
  3. sitecore_master_indexの再構築を実施します。
  4. Sitecore XP 8.0 Initial Release以降の場合:
    以下のページから影響を受ける製品バージョンと互換性のある修正プログラムをダウンロードしてインストールしてください:
    https://github.com/SitecoreSupport/Sitecore.Support.156916/releases.

解決策3(対象製品:Sitecore XP バージョン8.1 Update-3およびXPバージョン8.2

  1. Sitecore.Support.131964.dllアセンブリをダウンロードし、\bin フォルダに格納します。
  2. Sitecore.Support.131964.configファイルをダウンロードし、\App_Config\Include フォルダに格納します。
  3. 以下のページに掲載されている適切な修正プログラムをダウンロードし、適用します:
    https://github.com/SitecoreSupport/Sitecore.Support.156916/releases.

解決策4(対象製品:Sitecore XPバージョン9.0)

この解決策は、ロックされたアイテムを、SQLのフィルター選択されたインデックスのサポートを受けている軽量のダイレクトSQLクエリでロードするため、無制限のスケーラビリティを実現でき、コンテンツ数が増加してもパフォーマンスを低下させることはありません。

  1. Sitecore.Support.156916.dllファイルを ダウンロードし、\binフォルダに格納します。
  2. Sitecore.Support.156916.configファイルをダウロードし、\App_Config\Include フォルダに格納します。
  3. Sitecore MasterデータベースにSQLのフィルター選択されたインデックスを導入します:
    CREATE NONCLUSTERED INDEX IX_Versioned_Locks_Filtered
        ON VersionedFields (itemID)
    INCLUDE (Value,language,version)
        WHERE FieldId='{001DD393-96C5-490B-924A-B0F25CD9EFD8}' -- this is lock fieldID
  4. \Website\sitecore\shell\Applications\WebEdit\Dialogs\LockedItems フォルダに移動し、LockedItems.xaml.xmlファイルのx:inherits属性を以下の通り変更します:
    <Sitecore.Shell.Applications.WebEdit.Dialogs.LockedItems x:inherits="Sitecore.Support.Shell.Applications.WebEdit.Dialogs.LockedItems.LockedItemsPage,Sitecore.Support.156916">

解決策5(Sitecore XPバージョン9.1向けの回避策)

/App_Config/Sitecore/Experience Editor/Sitecore.ExperienceEditor.config ファイルにて、WebEdit.ShowNumberOfLockedItemsOnButton 値を「false」に設定します:

<setting name="WebEdit.ShowNumberOfLockedItemsOnButton" value="false" />