JSS Next.jsアプリでのビルド時の静的パスのカスタマイズ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

多くのページ、製品、または記事を含む大規模なWebサイトでは、すべてのページの静的生成に時間がかかる場合があります。静的に生成されたアプリケーションのビルド時間を短縮するには、一部の種類のページ/アイテムを静的生成から除外します。

これを実現するには、SitecoreSitemapFetcherクラス内で初期化および使用されるGraphQLSitemapService/MultisiteGraphQLSitemapServiceインスタンスを変更します。

大事な

パフォーマンス上の理由から、手動で追加または除外できるパスの合計数はEdgeによって制限されます。この制限を超えるクエリは、GraphQLエラーを返します。

JSS Next.jsアプリでビルド時の静的パスをカスタマイズするには:

  • レンダリング アプリケーション フォルダのsrc/lib/sitemap-fetcher/plugins/graphql-sitemap-service.tsファイルで、GraphqlSitemapServicePluginコンストラクタを次のように変更します。

    メモ

    Next.js Multisiteアドオンを使用する場合は、siteName: config.jssAppNameではなく、サイト リゾルバsites: ...new Set(siteResolver.sites.map((site: SiteInfo) => site.name))からサイトのリストを提供します。

    • パスを含めるには、GraphQLSitemapServiceインスタンスのincludedPathsパラメーターへのパスの配列を指定します。includedPathsを指定すると、クエリは指定されたパターンに一致するパスのみを返します。たとえば、プレフィックスが /products/が付いたすべてのパスを含めるには、次のようにします。

      constructor() {
        this._graphqlSitemapService = new GraphQLSitemapService({
          endpoint: config.graphQLEndpoint,
          apiKey: config.sitecoreApiKey,
          siteName: config.jssAppName,
          includedPaths: ["/products/"]     
       });
      }
    • パスを除外するには、GraphQLSitemapServiceインスタンスのexcludedPathsパラメーターへのパスの配列を指定します。たとえば、古い電話に関するパスを除き、/products/で始まるパスを含めるには、次のようにします。

      constructor() {
        this._graphqlSitemapService = new GraphQLSitemapService({
          endpoint: config.graphQLEndpoint,
          apiKey: config.sitecoreApiKey,
          siteName: config.jssAppName,
          includedPaths: ["/products/"],
          excludedPaths: ["/products/old-phones/"]     
       });
      }
    • 一部のパスを除くすべてのパスをフェッチするには、excludedPathsパラメーターのみを使用できます。たとえば、製品のすべてのパスを除外するには、次のようにします。

      constructor() {
        this._graphqlSitemapService = new GraphQLSitemapService({
          endpoint: config.graphQLEndpoint,
          apiKey: config.sitecoreApiKey,
          siteName: config.jssAppName,
          exludedPaths: ["/products/"]
       });
      }
この記事を改善するための提案がある場合は、 お知らせください!