ホームページがAdobe Experience Managerのコンテンツと共に読み込まれない
AEM as a Cloud Serviceは、空白のホームページを断続的に提供するので、ユーザーエクスペリエンスが中断され、誤ったダウンタイムアラートがトリガーされます。 この問題は、キャッシュが早すぎる、サービスが初期化されていない、またはレンダリングエラーが発生した場合によく発生します。 この記事では、キャッシュルールを調整し、ウォームアップ動作を確認し、カスタムコンポーネントのヘルスチェックを追加して信頼性の高いコンテンツ配信を確保することにより、問題を修正する方法について説明します。
説明 description
環境
この問題は、Adobe Experience Manager(AEM)as a Cloud Service - Sites に影響します(特に実稼動環境の場合)。
問題/症状
ホームページは、コンテンツなしで断続的に読み込まれ、空のページを提供します。 監視ツールは、ホームページのダウンタイムを示す複数のアラートを生成します。 この問題は 10~20 分以内に解決されますが、頻繁に繰り返されます。 この期間中、分析はページサイズの不一致を示し、システムは空のページのキャッシュバージョンを提供します。
解決策 resolution
この問題を解決するには、次の手順を使用します。
-
適切なキャッシュ無効化ルールを設定して、古くなったコンテンツや一貫性のないコンテンツが提供されないようにします。 Dispatcher の無効化のために、仮想ホスト設定に
localhostまたは127.0.0.1をServerAliasとして含めます。 詳しくは、Dispatcherのキャッシュについて および AEMの無効化されたキャッシュページ を参照してください。 -
すべてのサービスが初期化される前にリクエストを送信する場合は、ウォームアップサービスを一時的に無効にします。これにより、不完全なページがキャッシュされる可能性があります。
-
AEMを最新バージョンにアップグレードすると、レンダリングエラーによってキャッシュされた null 値が発生する問題に対処できるバグ修正が適用されます。
-
コードベース内の Sling モデルを確認および更新します(詳しくは、 コンポーネントの Sling モデルの作成)を参照してください
- 必要に応じて、注射をオプションとしてマークするだけです。
- 初期化中のランタイム例外を回避するために、コード内の null 値を明示的に処理します。
-
重要なカスタムコンポーネントの OSGi ヘルスチェックを実装して、トラフィックを提供する前に初期化されるようにします。
code language-none { "hc.name": "Required Custom Components", "hc.tags": [ "systemalive", "systemready"] , "components.list": [ "com.example.core.services.impl.RenditionServiceImpl"] }/system/console/healthcheck?tags=systemreadyにアクセスし、リストされているすべてのコンポーネントが OK ステータスを返すことを確認することで、この設定をローカルでテストします。 詳しくは、AEM as a Cloud Serviceの OSGi の設定 を参照してください。 -
起動時にポッドログを確認し、レンダリングの失敗や初期化されていないサービス(
NullPointerExceptionなど)に関連する例外を特定します。 依存関係の適切な挿入と初期化を行うことで、これらの問題を修正します。 -
実稼動環境にデプロイする前に、ステージング環境でのすべての変更をテストして、ダウンタイムやキャッシュの問題のリスクを軽減します。
これらの手順は、サービス初期化エラーやキャッシュの設定ミスなどの根本原因に対処することで、ホームページの繰り返し発生する停止を防ぎ、一貫性のあるコンテンツ配信を確保するのに役立ちます。