ページネーションは、ページと呼ばれるより小さな部分に大きなレコードセットを破壊するための手法です。開発者としては、ページネーションの実装に精通している必要がありますが、リアルタイムのデータにページネーションを実装することは、経験豊富な開発者であっても注意が必要です。このチュートリアルでは、リアルタイムのデータページネーションとカーソルベースのページネーションのための実際のユースケースとソリューションについて説明します。
キーテイクアウト- ページネーションは、ページと呼ばれる大規模なレコードセットをより小さな部分に分割するために使用される方法です。リアルタイムデータのページネーションの実装は、頻繁に更新されるため、データを追加または削除する際の不正確な結果の可能性があるため、困難な場合があります。
TwitterやFacebookなどのさまざまなソーシャルネットワーキングサイトが、リアルタイムデータページネーションの実装に成功しています。彼らは、ページネーションの記録数ではなく、一意の識別子(カーソル)に依存するカーソルベースのページネーションを使用します。
- カーソルベースのページネーションには、TwitterのMAX_IDパラメーターまたはFacebook後のパラメーターと同様に、一意のシーケンシャル値を持つ少なくとも1つの列が必要です。また、限られた数の結果をフィルタリングするためのカウントパラメーター、およびデータをナビゲートするための次のURLと以前のURLも必要です。 カーソルベースのページネーションは、一般に、特にリアルタイムデータまたは大規模なデータセットの場合、オフセットベースのページネーションよりも効率的で信頼性が高くなります。サーバーの負荷を削減し、ページネーションプロセスをより速く、より効率的にします。
- カーソルベースのページネーションの実装には、カーソルとして使用する一意の識別子を決定する、このカーソルに基づいてレコードを取得するためにデータベースクエリを変更すること、アプリケーションのUIを更新してページングされたデータを処理し、ユーザーがユーザーにできるようにするなど、いくつかのステップが含まれます。ページをナビゲートします。
- リアルタイムのデータページネーションの問題の特定
- Wikipediaは、リアルタイムデータを収集直後に提供される情報として定義しています。提供された情報の適時性に遅延はありません。 このようなアプリケーションでは、頻繁に更新されるため、正確な塗装データを提供することは困難です。リアルタイムデータを管理する際の標準的なページネーションの問題を見てみましょう。
これらのポイントを考慮すると、リアルタイムデータを処理するためのデフォルトページネーションテクニックに使用することは困難です。実用的なシナリオを使用して問題を特定してみましょう。
最初に20のレコードがあり、10を使用してレコードをページに分割するために制限として使用していると仮定します。次の画像は、レコードがどのようにページに分割されているかを示しています。
最初のページにあるときに、結果セットが5つの新しいレコードによって更新されると仮定します。次の画像は、現在のシナリオを示しています
次に、2番目のページに移動します。最初の画像に基づいて、1〜10のレコードを取得する必要があります。ただし、数字15〜6のレコードが取得されます。レコード番号15-11が最初のページと2番目のページの両方に表示されることを明確に確認できます。
私たち全員が知っているように、ホイールを再発明することは、開発者がすべきことではありません。私たちは、独自の構築を考える前に、これらの問題を解決したサイトの既存のページネーション技術を調べる必要があります。 TwitterやFacebookなどの多くのソーシャルネットワーキングサイトは、ユーザープロファイルにリアルタイムデータを提供しています。このセクションでは、最も人気のあるサイトのいくつかを使用して、リアルタイムデータページネーションの実際のユースケースを検討します。
Twitter APIカーソルベースのページネーション
Twitterユーザープロファイルには新しいツイートが頻繁に入力されているため、Twitterタイムラインデータ検索メカニズムは、リアルタイムのデータフィードでページネーション技術を特定するための適切なスタートになるはずです。 Twitter APIメソッドを使用してそれがどのように機能するかを見てみましょう。
以下には、Twitter API検索ツイート方法へのサンプルリクエストが含まれています。上記のURLでは、「PHP」という単語を含む最新のツイートを要求し、カウントパラメーターを使用して結果を10のブロックに分割します。これは、記録数で返信するオフセットページネーションの典型的な動作です。しかし、ここでは、bund_idとmax_idと呼ばれる2つの追加のパラメーターを見ることができます。これにより、カーソルベースのページネーションが可能になります。以前の例を使用してカーソルベースのページネーションがどのように機能するかを見てみましょう。
20ページに20のレコードが分かれており、最初のページにいると仮定します。 5つの新しいレコードがリストの上部に追加されます。次の画像では、現在のシナリオをプレビューします。
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10次に、Twitter検索リクエストの最初のページに生成された応答の一部を見てみましょう。完全な応答形式はこちらから表示できます。
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
ご覧のとおり、Search_Metadataセクションでは、結果に関する詳細を提供します。 Paginateのレコードが増える場合に備えて、next_results URLが生成されます。主に、ページネーションにMAX_IDパラメーターを使用しています。各応答を使用すると、MAX_IDパラメーターを取得し、それを使用して次の結果セットを生成できます。 MAX_IDパラメーターを使用して、指定されたIDよりも古い結果を受信します。 この例では、レコード20-11を表示しながら、MAX_IDパラメーターをレコード11として取得する必要があります。次に、MAX_IDを渡して次の結果セットを生成します。したがって、次の画像に示すように正確な結果が得られます。
ご覧のとおり、オフセットベースのページネーションで10ではなく上部で15のレコードを排除することにより、2ページ目の正確な結果が得られます。カーソルベースのページネーションでは、ページが急速に変化するため、ページの概念を考慮することはできません。そのため、結果は以前または次と見なされます。一般的に、MAX_IDは正確な結果を生成するのに十分効果的ですが、前後にパジをパジングしながらanse_idも不可欠であるシナリオがある場合があります。 Twitterの開発者セクションでMAX_IDとANSE_IDの両方を使用するより高度な例を見ることができます。
Facebook APIカーソルベースのページネーション
FacebookのAPI実装は、両方のAPIが同じ理論を使用しているにもかかわらず、Twitterと比較してわずかに異なります。 Facebook APIリクエストのサンプルの応答を見てみましょう。
ご覧のとおり、Facebookは、以前と後に呼び出される2つの文字列ベースのカーソルを使用します。 Facebookでは、前のカーソルがページの開始を指し、後のカーソルがページの最後を指します。
リアルタイムデータを使用したほとんどのAPIは、このメカニズムを使用して結果を正確にページングします。開発者として、既存のAPIを使用し、必要に応じて独自のAPIを使用するために、カーソルベースのページネーションの背後にある理論を知る必要があります。
リアルタイムデータのページネーションの構築の基本"search_metadata": { "max_id": 250126199840518145, "since_id": 24012619984051000, "refresh_url": "?since_id=250126199840518145&q=php&result_type=recent&include_entities=1", "next_results": "?max_id=249279667666817023&q=php&count=10&include_entities=1&result_type=recent", "count": 10, "completed_in": 0.035, "since_id_str": "24012619984051000", "query": "php", "max_id_str": "250126199840518145" }
リアルタイムデータページネーションの実装は、このチュートリアルの範囲を超えた複雑なタスクであるため、カーソルベースのページネーションを理解するための単純なページネーションメカニズムを作成するプロセスを調べます。
以前に説明した例を使用して、カーソルベースのページネーションの基本的なコンポーネントを特定しましょう。
カーソル - カーソルベースのページネーションを実装するには、一意のシーケンシャル値を持つ少なくとも1つの列が必要です。これは、TwitterのMAX_IDパラメーターまたはFacebook後のパラメーターに似ています。
カウント - カーソルの前後に限られた数の結果をフィルタリングするためのオフセットベースのページネーションと同様に、カウントパラメーターが必要です。
次のURL - これは、APIを介してページネーションを提供している場合に必要です。ユーザーは、次のページが利用可能かどうか、次のデータセットを取得する方法を知る必要があります。
これらは、カーソルベースのページネーションの基本的なニーズです。開発者は、多くの場合、オフセットベースのページネーションを使用して、カーソルベースのページネーションで作業する機会を得ることはめったにないため、適切なシナリオでそれらを使用するための各手法の違いと利点を特定することが重要です。
- 一般的に、オフセットページネーションを使用すると、カーソルベースのページネーションが主にフォワードナビゲーションに使用されます。
-
- 最初に、PDOを使用してデータベース接続を作成します。次に、結果をページングするためにHandlePaginationData関数を実行します。 次に、MAX_IDまたはMIN_IDパラメーターがURLで使用できるかどうかを確認します。 MAX_IDは、Facebookの後のパラメーターに似ており、前方にナビゲートするために使用されます。 min_idは、facebookの前のパラメーターに似ており、後方にナビゲートするために使用されます。また、ナビゲーションの方向、max_idまたはmin_idを使用した句とソート順序を設定します。
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
- 最後に、ページネーションリンクを実装するためのページネーター関数を見ることができます。
-
https://api.twitter.com/1.1/search/tweets.json?q=php&since_id=24012619984051000&max_id=250126199840518145&result_type=recent&count=10
今では、リアルタイムのデータページネーションの仕組みを理解するための単純なデータページネーションサンプルがあります。このコードを使用して、結果を介してページングします。ページング中に、テーブルの端にいくつかのレコードを追加して、リアルタイムにします。次に、前後にページのデータの複製を確認します。違いを理解するためにオフセットベースのページネーションで同じことをしてください。
結論このチュートリアルでは、カーソルベースのページネーションを使用したリアルタイムデータページネーションの背後にある理論を学びました。以下のコメントであなたの考えや経験を教えてください!
カーソルベースのページネーションに関するよくある質問(FAQ)
オフセットベースのページネーションとカーソルベースのページネーションの主な違いは何ですか?
オフセットベースのページネーションでは、最初から一定数のレコードをスキップしてから、セット数のレコードを取得します。ただし、この方法では、ページネーション中にデータが追加または削除された場合、レコードを複製するなどの問題につながる可能性があります。一方、カーソルベースのページネーションは、最後のフェッチされたレコードの一意の識別子(カーソル)を使用して、次のレコードセットを取得します。この方法はより効率的であり、オフセットベースのページネーションに関連する問題を回避するため、リアルタイムデータに最適です。 - ベースのページネーションは、最後のフェッチレコードの一意の識別子(カーソル)を使用して次のレコードセットを取得するため、リアルタイムデータに特に効果的です。これは、ページネーションプロセス中に新しいデータが追加されているか、既存のデータが削除されたとしても、カーソルが正しい次のレコードを指し、レコードが見逃さないか重複していないことを保証することを意味します。あらゆるタイプのデータとともに使用しますか?ただし、効率が重要なリアルタイムデータまたは大規模なデータセットでは特に効果的です。カーソルは、次のレコードのセットを取得するために使用できるタイムスタンプや一意のIDなどの一意の識別子にすることができます。カーソルベースのページネーションは、一度に処理する必要があるデータの量を減らすことでパフォーマンスを向上させます。すべてのレコードを取得してから特定の番号をスキップする代わりに、カーソルベースのページネーションは、カーソルに基づいて次のレコードセットを取得するだけです。これにより、サーバーの負荷が削減され、ページネーションプロセスがより速く効率的になります。
アプリケーションにカーソルベースのページネーションを実装するにはどうすればよいですか?
アプリケーションにカーソルベースのページネーションの実装には、いくつかのステップが含まれます。まず、カーソルとして使用する一意の識別子を決定する必要があります。これは、タイムスタンプ、一意のID、またはその他の一意の値です。次に、データベースクエリを変更して、このカーソルに基づいてレコードを取得する必要があります。最後に、アプリケーションのUIを更新して、ページ化されたデータを処理し、ユーザーがページをナビゲートできるようにする必要があります。ページネーションは、オフセットベースのページネーションよりも効率的で信頼性が高く、いくつかの潜在的な欠点があります。たとえば、特にデータがカーソルとして使用する明確な一意の識別子がない場合、実装する方が複雑になる可能性があります。さらに、特定のページ番号にジャンプする必要がある場合など、すべてのユースケースに適していない場合があります。 - ベースのページネーションは、GraphQLで使用できます。実際、GraphQLには、リレー仕様を介したカーソルベースのページネーションのサポートが組み込まれています。これにより、GraphQLアプリケーションに効率的で信頼性の高いページネーションを簡単に実装できます。カーソルとしてのタイムスタンプや一意のIDなどの識別子。次に、このカーソルに基づいてSQLクエリを変更してレコードを取得し、「WHERE」と「LIMIT」条項を使用してレコードの範囲を指定して取得します。 api?
Slackは、APIでカーソルベースのページネーションを使用して、大量のデータを効率的に取得します。彼らはカーソルとして一意の識別子を使用し、API応答でこのカーソルを提供して、クライアントが次のレコードセットを取得できるようにします。これにより、高性能と信頼性を備えた大規模なデータセットを処理することができます。 Cursorとして識別子およびAPI応答の「リンク」オブジェクトにこのカーソルを含めます。これにより、クライアントは、提供されたリンクに従って次のレコードセットを簡単に取得できます。この仕様は、JSON APIでカーソルベースのページネーションを実装するための標準的で一貫した方法を提供します。
以上がカーソルベースのページネーションを使用したリアルタイムデータをページングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
