0

現在、phonegap と jquerymobile を使用してアプリを開発しています。アプリには、ユーザーに表示される多くのデータが含まれています。すべてのデータは phonegap ストレージの実装で保存されます。データは、リストビュー、詳細ビュー、フィルターされたリストビューなどでユーザーに表示されます-これまでのところ問題はありませんが、ここに私の質問があります:

phonegap ストレージ メソッドの非同期的な方法 (リレーショナル データに問題を引き起こす) と、データの多くが (少なくとも部分的に) すべてのビューで使用されるという事実のために、すべてのデータを 1 つの大きな JavaScript に格納することを考えています。オブジェクトなので、起動時にすべてのデータがロードされ、多くの db アクションは必要ありません。

オブジェクトには、最大で約10個の2〜4次元のハッシュ配列が含まれると思います。2000-3000 エントリ。

これは可能ですか、それともアプリの速度が大幅に低下しますか。私が使用できる、または使用すべき別のアプローチはありますか。


エリックへの答え:

しかし、私は物事をもう少し説明する必要があることを認識しました:

オブジェクトに含まれるデータは、エンティティ {名前、見出し、小見出し、説明、作成日、更新日、小さな文字列、小さな文字列、小さな文字列} などの多くのエンティティを持つ 1 つの 3 つの配列で構成され、他のすべての配列には主に関係識別子が含まれます3 つの大きな配列の場合。

これらの配列はどれも変更または操作されません。サーバーとの同期により、すべてのデータが完全に変更されるだけです。

また、すべてのデータがローカルに保存されていること、およびアプリが jquery モバイルで実現されているため、ページのリロードがないことも重要です。他のコンテンツを表示する必要がある場合は、必要な html が JavaScript で読み込まれ、ページ。

まだいい考えがありませんか?はいの場合、良い考えはありません - より良いアプローチは何ですか?

4

1 に答える 1

0

「エントリ」の意味にもよりますが、大量の負荷がかかり、メモリ内に不必要に非常に大きなオブジェクトが続く可能性があるように思えます。まず、オブジェクトをどこかで文字列として表現することをお勧めします。その文字数は、ページごとに実際にロードしているバイト数を表します。これは、決して変更されず、ブラウザーが解析する必要がある 1 回限りのロード js ファイルの形式ではないと想定しているためです。ページが読み込まれた後のばかげたこと。

私の本能は、これは間違った方法だと言っています。2D配列を超える必要がある場合、これはメガバイトにまで及ぶ可能性があるように聞こえますが、これによりロード時間が丸1秒追加されますが、さらに重要なことは、部分的にしか軽減しない何かをしようとしているように聞こえますどちらかといえば、これは最初のルックアップの削減に役立つだけで、クライアント側の非同期が本当に面倒になる可能性がある更新には役立たないため、実際の問題です。また、そのデータが増加する可能性がある場合、現在は管理可能と思われるデータでも、将来的には簡単にアプリが台無しになる可能性があります。

過剰な HTTP リクエストを回避するための鍵は、常に静的データをページに焼き付けることと、それが経済的である場合は第 1 層のもの (たとえば、最初の選択ボックスをクリックして従属選択ボックスにロードするもの) を含めることです。そして、可能な限り ajax 呼び出しの結果をキャッシュします。

クライアント側のロジックで重要なことは、サーバー側のデータを取得するための一貫性のある管理しやすい API を用意し、サーバーが実際に発生したことを確認するまで、何も変更または完了として表示しないことです。

于 2012-10-18T21:52:26.860 に答える