私が見ているほとんどの例では、アプリの読み込み時にデータのコレクション全体が読み込まれます。
私の最初のアプリはとてもシンプルです。クリック可能な記事のリストを含む領域と、完全な記事を含む記事の詳細領域をメニューします。記事のコレクションがある場合、最終的にはデータがかなり大きくなる可能性があります。
巨大なコレクションにすべてをロードすることが道のりではない場合、誰かが私のデータを遅延ロードする方法を示す、より良い例がありますか?
私が見ているほとんどの例では、アプリの読み込み時にデータのコレクション全体が読み込まれます。
私の最初のアプリはとてもシンプルです。クリック可能な記事のリストを含む領域と、完全な記事を含む記事の詳細領域をメニューします。記事のコレクションがある場合、最終的にはデータがかなり大きくなる可能性があります。
巨大なコレクションにすべてをロードすることが道のりではない場合、誰かが私のデータを遅延ロードする方法を示す、より良い例がありますか?
これは、どのデータをブートストラップする必要があるのか、どのデータをブートストラップしないのかに関する質問であるため、マリオネットの質問ではありません。
一般的なルールは次のとおりです。
画面に何が表示されていても、常にデータが必要な場合は、データをブートストラップします。常に必要でない場合は、ブートストラップしないでください。
もちろん、その中で議論できるニュアンスはありますが、一般的にはかなりうまくいきます。
マリオネットを使用したデータのブートストラップに関しては、それが理にかなっている場合、Application.start
メソッドはこのためのパラメーターを受け取り、それをすべての初期化子に渡します。
これに関する個人的な経験からのいくつかのメモ:
通常、すべてのデータをロードすることは、クライアントではなく DB のボトルネックです。DB を最適化できれば、クライアントは数百、場合によってはそれ以上の記事を簡単に処理できます。
アプリを最終的に Cordova または WebWorks でラップされた HTML5 モバイル アプリにする場合は、ブートストラップを適用できず、すべてのデータを動的にロードする必要があります。
モバイル デバイス (ブラウザーや Cordova は関係ありません) では、オフスクリーン エレメントをレンダリングしないことが、最初から読み込まないことよりも重要です。もちろん、使用するメモリはまだ少なくなりますが、コレクション全体をレンダリングすると、メモリではなく、レンダリングとスクロールが原因になります。
デスクトップ ブラウザーでは、データをプリロードすると、はるかにスムーズなエクスペリエンスが提供されます。最初に上位 10 件の記事のみを読み込んだ場合でも、残りの関連データをすぐにプリフェッチします。
モデルに「関連する」モデルまたはデータが多数ある場合、Backbone-Relation fetchRelated
をダーティー ハックとして使用できますが、この方法はほとんどのユース ケースでは非効率的です。
記事の詳細が表示されたときに記事関連のデータを動的にロード/アンロードすることを計画している場合は、Application オブジェクトまたはビューで明示的に管理することをお勧めします。データをキャッシュしたい場合は、Backbone 用のキャッシュ アプリがあります (キャッシュする必要があります)。フェッチ/キャッシュを管理するには、データがフェッチされたかどうかを示す記事モデルの単純なフラグで十分です。
データが非常に動的である場合は、少なくとも最初は物事を単純にするために、キャッシュせずに動的部分を毎回フェッチします。
お役に立てれば。より具体的な懸念がある場合は、質問を更新するか、コメントを投稿してください。
ページ化された記事のコレクションをブートストラップします(例として、最新の 10 件を意味します)。たとえば、ユーザーが下にスクロールすると、次の 10 または意味のある数字を読み込みます。この手法の例は Web 全体にあります。
お役に立てれば。