JSSトポロジ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
JSSは、ほとんどのDevOpsデプロイ プロセスに適合するように設計された柔軟なテクノロジです。JSSサイトは、いくつかの異なるトポロジでデプロイできます。ヘッドレス技術として、どちらを選択すればよいかわからない場合は、JSSの最大の利点を実現するために、ヘッドレス展開に傾倒してください。
ヘッドレストポロジ
headlessトポロジーでは、従来のSitecore XP(またはXM)デプロイメントが、パーソナライゼーションが事前に適用された状態で、コンテンツとレイアウトデータを提供するAPIサーバーに変わります。
このトピックでは、JSSとのインタラクション以外でSitecoreデプロイメントを設定する方法については説明しません。 Sitecoreのデフォルトのデプロイメント トポロジ はJSSの外部にあります。
次の図は、ヘッドレス トポロジを使用する場合のアプリ ユーザー、JSS、Sitecore間のリクエスト フローを示しています。
ヘッドレス モードで実行している場合、Sitecore Content Delivery (CD) サーバーは公開Webサイトを直接提供しません。代わりに、安価なNode.jsサーバーのクラスターが公開Webサイトをホストしています。これらのノード サーバーは、node-headless-ssr-proxyを実行します。このサーバーサイド レンダリング (SSR) プロキシは、Sitecore CDサーバーで実行されているAPIにリクエストを送信し、JSSアプリケーションをHTMLにレンダリングしてからクライアントに返します。これらのSSRプロキシは、Node.js実行できる場所ならどこでもホストできます。
ヘッドレス トポロジでは、private Sitecore CDサーバーを使用できます。SSRプロキシは、API呼び出しやメディア ライブラリ要求などの特定のパスをSitecore CDにリバース プロキシすることもできます。この設定では、JSSアプリはproxy URLをAPIサーバー (つまりhttps://www.mysite.com) として使用し、SSRプロキシ プロキシを使用してhttps://sitecore-cds.mysite.com.
SSRプロキシの使用を避け、アプリがAPIデータを入力する静的HTMLファイルを提供できます。これにより、ノードホスティングが不要になります。ただし、クライアントのみのレンダリングを使用している場合、一部の検索エンジンではコンテンツのインデックス作成に問題が発生する場合があります。JavaScriptを実行しないとHTMLの大部分が空白になります。一部の検索エンジンは、さまざまなレベルの成功でJavaScriptを実行しますが、検索エンジンがJavaScriptレンダリングを処理する方法に一貫性がないため、SSRは依然として現在のベストプラクティスです。
統合トポロジ
integratedトポロジでは、Sitecore CDサーバーは、独自の統合 (同じサーバー、プロセス プール外) Node.jsサービスを使用して、JSSアプリのサーバー側レンダリングを実行します。このモードは、特にCDN統合とSSRインスタンスとは別にAPIサーバーをスケーリングする機能に関して、ヘッドレス デプロイよりもスケーラビリティの点で柔軟性が低くなります。このモードでは、APIホスティングとレンダリングは同じサーバー上で実行されます。
また、統合トポロジを使用する場合、リクエストは引き続きSitecoreによって事前に解析され、Sitecoreルーティングの対象となるため、高度なクライアント側ルーティング シナリオを実行する柔軟性が低くなります。ヘッドレスモードでは、カスタムExpressミドルウェアを実行して、サーバーを広範囲にカスタマイズできます。統合モードでは、代わりにSitecore (C#) で同様のカスタマイズを行う必要があります。
次の図は、統合トポロジを使用する場合のアプリ ユーザー、JSS、Sitecore間のリクエスト フローを示しています。
高負荷のプロダクション シナリオでは、ページ全体が個々のレンダリングではなく、ブロックとしてNode.jsを使用してサーバー側でレンダリングされるため、統合モードはお勧めしません。したがって、従来の出力キャッシングメカニズムはオールオアナッシングになります。言い換えると、キャッシュが有効な場合、ページ全体のキャッシュが強制されますが、これはほとんどの場合、望ましいものではありません。