Shopify LiquidとStorefront GraphQL APIの新しいページネーション制限について
ShopifyのLiquidテーマとStorefront GraphQL APIは、オブジェクトの配列のページネーションを25,000アイテムに制限する新しい変更があります。この変更により、開発者が対応する必要がある事項や、それによるパフォーマンスの影響を解説します。
変更の内容と影響
具体的には以下の通りです:
- ページネーションされたGraphQLクエリ(
first
、last
、before
、after
パラメーターを使用するもの)では、配列の25,001番目以降のアイテムをページネーションするとエラーが返されます。 - Liquidの
paginate
タグを使用する場合、配列の25,001番目以降のアイテムをページネーションすると、最後の許容されるページが返されます。 - LiquidまたはGraphQLからの任意のクエリで、配列のアイテムが25,000以上の場合、カウントの最大値として25,001("25,000以上"を示す)が返されます。
- Liquidのページサイズの最大値が、50から250に引き上げられました。これにより、Storefront GraphQL API の制限と一致します。
この変更はLiquidとStorefront GraphQL APIにのみ影響し、Admin GraphQL APIには影響しません。Admin GraphQL APIは引き続き、より高い制限をサポートします。
対応策と実装手順
もし、あなたのアプリケーションやストアフロント、Liquidテーマが25,000以上のアイテムをページネーションしている場合、以下の対応策を考慮してみてください。
- ビューにフィルターを追加して、ページネーション前に結果を絞り込む。例えば、商品タイプ、価格範囲、在庫の有無などでフィルタリングします。
- カウントハンドリングを更新して、最大返却値25,001を考慮し、それを「25,000以上の製品が利用可能」といった人間が読みやすい値に置き換えます。
パフォーマンスとコストへの影響
この新しい制限は、ページネーションを頻繁に行う大量のアイテムを扱うストアにとっては、一部の調整が必要です。しかし、一度適切なフィルタリングを実装すれば、ページネーションのパフォーマンスが大幅に向上する可能性があります。大量のアイテムを一度に取得するよりも、必要なアイテムを効率的に取得することで、サーバーへの負荷を軽減し、全体的なレスポンス時間を短縮することができます。
注意点とベストプラクティス
この変更に対応する際には、以下の点に注意することが重要です。
- ページネーション制限の変更が影響を及ぼす可能性のある箇所を確認し、必要な調整を行います。
- フィルタリングは、ユーザーが求めるデータを効率的に取得できるように、適切に設計することが重要です。
- 新たな制限が適用される前に、あらかじめテストを行って確認することをおすすめします。
次のステップ
今後もShopifyのAPIの変更に対応するためには、定期的に公式の更新情報を確認したり、APIのドキュメントを読み直したりすることが重要です。また、今回の変更により、新たなユーザーエクスペリエンスの改善や、より効率的なデータ取得の方法を模索する機会にもなります。
参考記事: New pagination limits for Liquid & Storefront GraphQL API
AUTHOR
Share:
`_shopify_country`クッキーの設定が廃止されます
チェックアウト時に条件付きで支払い条件を定義する