エクスペリエンス エディターやその他のSPEAK アプリケーションの読み込みに時間がかかる場合がある


解説

Sitecore XP 8.0以降を使用している場合、エクスペリエンス エディターおよびその他のSPEAK アプリケーションが、アプリケーション プールのリサイクル後のロードに、かなりの時間を要する場合があります。アプリケーションのリサイクルは通常、Webサイトを再コンパイルするとき、または新しいアセンブリを追加するときに発生します。

この動作の主な理由は、SPEAK コンポーネントによって使用されるMVC ビューの再コンパイルです。

以下に、エクスペリエンス エディターおよびその他のSPEAK アプリケーションの読み込み時間を短縮する方法をいくつかご案内します。

以下にご提供するソリューションにより、Sitecore Experience Platform 全体のロード時間が改善される場合もあります。

Razor Generatorを使用してMVC ビューをプリコンパイルする

Sitecore XP 8.2 Initial Release 以降、プリコンパイルされたMVC ビューを使用できる場合があります。

ビューを事前にコンパイルすることで、次のメリットが得られます:

MVC ビューをプリコンパイルするには、以下を実行してください:

  1. Visual StudioでMVC ソリューションを開きます。
  2. Razor Generator ツールをインストールします。
  3. ビューのプロパティ(.cshtml ファイル)を開きます。
  4. カスタム ツール フィールドの値をRazorGeneratorに設定し、Enter キーを押します。この場合、ビュー用にソース コードを含む.cs ファイルが作成されるはずです。
  5. プロジェクトをビルドし、プリコンパイルされたビューを含むアセンブリをSitecore XP ソリューションの\bin フォルダーにコピーします。
  6. 次に、Sitecore.Mvc.config ファイルのsitecore\mvc\precompilation\assemblies 構成セクションにアセンブリを追加します。例えば:
    <precompilation>
        <assemblies>
            <assemblyIdentity name="Sitecore.Mvc" />
            <assemblyIdentity name="MyAssembly" />
        </assemblies>
    </precompilation>

プリコンパイル

Sitecore Installerを使用する

Sitecore XP 8.0 Update 5 以降、Sitecore Installer にはSitecore ファイルをプリコンパイルするオプションが含まれます。インストール プロセスが少し長くなりますが、結果としてSitecore 自体およびそのコンポーネントの読み込みが速くなります。

このオプションは、IIS Web サイトのインストール ウィンドウからアクセスできるIISの詳細設定にあります:

ただし、このインストーラーはサイトを1回だけプリコンパイルするため、Webサイトのファイルが変更されると、コンポーネントの読み込みが長くなる可能性があることに注意してください。これが受け入れられない場合、以下の代替案を検討してください。

ASP.NET コンパイル ツールを使用する

zip アーカイブからSitecore Experience Platformをインストールする場合、またはWebサイト ファイルに頻繁に変更を加える場合、次の記事で説明されるように、変更またはインストール後にASP.NET コンパイル ツールを使用してWebサイトをプリコンパイルできます:
https://msdn.microsoft.com/en-us/library/ms227972.aspx

開発環境では、ビルド後のイベントとしてASP.NET コンパイル ツールを実行するようにVisual Studio プロジェクトを構成できます。これは、プロジェクトのビルド プロパティで実行できます。

Sitecoreでのデフォルトのプリコンパイル

また、Sitecoreには、Sitecore.Speak.config ファイルとSitecore.ContentTesting.config ファイルで定義された初期化パイプラインに次のプロセッサを備えたプリコンパイル ロジックがいくつかあることにも注意してください:

<processor type="Sitecore.Pipelines.Initialize.PrecompileSpeakViews, Sitecore.Speak.Client">

このプリコンパイルはWebサイトへの最初のリクエストで実行されるため、最初のリクエストの処理とSitecore 全般の速度が低下する可能性があります。

ただし、ASP.NET コンパイル ツールまたはSitecore Installerを使用してサイトが既にプリコンパイルされている場合、開始時間に影響を与えることはありません。

他の方法でWebサイトを事前にプリコンパイルせずにこのプロセッサを無効にすると、Sitecore アプリケーションの開始時間が短縮されますが、エクスペリエンス エディターを含むSPEAK コンポーネントの速度が低下する可能性があります。

プリコンパイル情報

プリコンパイルの詳細については、次のMSDNの記事を参照してください:
https://msdn.microsoft.com/en-us/library/bb398860.aspx

最適化されたコンパイル

Webサイトの変更後のSPEAK コンポーネントのロード時間を短縮するために、web.configコンパイル要素に、次のようにoptimizeCompilations 属性を追加して要素を変更できます:

<compilation ...  optimizeCompilations="true">

この属性を追加すると、ASP.NETは明示的に変更されたファイルのみを再コンパイルし、他のすべてのファイルはそのまま残します。

optimizeCompilationstrueの場合、再コンパイル後の開発中にいくつかの問題が発生する可能性があることに注意してください。MSDNの記事によると:

When you change a top-level file only the affected files are recompiled. This saves time but can cause run-time errors depending on the type of changes you make to a top-level file.
(和訳:最上位ファイルを変更すると、影響を受けるファイルのみが再コンパイルされます。これにより時間を節約できますが、最上位ファイルに加えた変更の種類によって、実行時エラーが発生する可能性があります。)

詳細については、前述の記事の「Optimizing Dynamic Compilation(動的コンパイルの最適化)」の部分を参照してください。

エクスペリエンス エディターにSheerUI リボンを使用する

注:これは、エクスペリエンス エディターに固有のものです。

エクスペリエンス エディター リボンをSheerUI モードに切り替えることで、エクスペリエンス エディターの読み込み時間を短縮することもできます。

SheerUIは、Sitecore XP 8.0のリリース前にページ エディターで使用されていたテクノロジーであるため、エクスペリエンス エディターのSheerUI リボンの機能はSitecore 7.2の機能と同じになります。

切り替えの実行方法については、次のKB 記事を参照してください:KB0359871

SheerUI リボンはSitecore XP 8.0以降SPEAK リボンに置き換えられているため、最後の手段としてのみSheerUI バージョンを使用することをお勧めします。SheerUI コードはSitecore 8.1以降廃止されたものとしてマークされており、エクスペリエンス エディターに実装されるすべての新機能はSPEAK モードでのみ利用可能になります。

クレジット

Connective DX社のSitecore MVPエンジニアであるKam Figy氏が、ブログ投稿で最適化のアイデアのいくつかを公開していただきましたことに、感謝の意を表します。
http://kamsar.net/index.php/2015/02/sitecore-8-experience-editor-performance-optimization/