Glass Mapperは、Sitecoreのパートナー企業様のソリューションで幅広く利用されているサード パーティ製モジュールです。しかし、SitecoreとGlass Mapperの組み合わせは弊社では公式にテストされていないため、Sitecoreではこのような構成の安定性の保証を行っていないことにご注意いただく必要があります。
本記事では、このようなインテグレーションを実施した際に発生する可能性がある問題の事例と、発生した問題がGlass Mapperに関連するかどうかを確認するための診断手順について説明します。
以下の潜在的な問題が発生する可能性があります。
症状
この問題は、Glass Mapper APIの誤った使い方によって発生する可能性があります。この挙動を診断するには、Sitecoreベースのプロジェクトで使用されているカスタム コードまたはGlass Mapperのソースで、Glass.Mapper.Pipelines.ObjectConstruction.Tasks.CreateInterface.InterfacePropertyInterceptor.LoadAllValues()メソッドを使用している箇所をコメント アウトし、メモリ使用量を観察して、問題が解決されるかどうかを確認します。
備考:モデルがキャッシュされる場合、またはレイジー ロードが無効になっている場合、LoadAllValuesメソッドを削除すると、問題が発生する可能性があります。
解決策
症状
この問題は、Glass Mapperを使用してアイテム タイプを解決する際に、タイプが再作成されることによって発生する可能性があります。この問題は、Glass.Mapper.Sc.ISitecoreService.GetItem<T>(...)を呼び出した際に発生する可能性があります。CPU使用率を観察し、問題が継続するか、または解決するどうかを確認します。
備考:デフォルトでは、キャッシュは使用されません。
解決策
タイプ キャッシュを有効化します。その方法については、以下の記事を参照してください。
http://glass.lu/blog/2019-04-26-CacheAlwaysOn
症状
エクスペリエンス エディタまたはGlass Mapperのヘルパーを使用したフロントエンド サイトのページで、テキストまたはリンクが不適切にエンコードされたり、レンダリングの問題が発生することがあります。
診断
Glass MapperのヘルパーをデフォルトのSitecoreのヘルパー(例:@Html().Sitecore().Field(...))に置き換え、問題が解決するかどうかを確認します。
解決策
最新のGlass Mapperが使用されているかを確認し、デフォルトのヘルパーを使用するか、またはGlass Mapperサポートにお問い合わせください。