0

iOS と Android で HTML5 モバイル アプリを実行しています。ユーザーは通常、いくつかのテーブルに少量のローカル データを保存します。平均 3 つのレコードを持つ 5 つのテーブルがあるとします。

websql のパフォーマンスは非常に悪いです。この投稿で、遅延の多くはおそらく各トランザクションのデータベースの開閉にあると読みました。通常、ユーザーは一度に 1 つのトランザクションしか実行しないため、各操作でデータベースを開いたり閉じたりするのに必要な時間は、通常、必要な合計時間の比較的大きな部分になります。

データベースを一度開くだけで、すべてのトランザクション ラッパーを省略して、SQL をすぐに実行できるかどうか疑問に思っています。

テーブルは、データを更新するユーザー、または更新後にデータを読み取り、計算と統計のためにデータをサーバーに送信するアプリ以外の人物またはプロセスによって使用されることはありません。

最も重要なのは、上記の戦略に従い、データベースが閉じられていない場合、ユーザーまたは OS がアプリを閉じた場合 (適切に言えば、Web ビュー)、変更されたデータは保持されるか、失われるのでしょうか?

4

2 に答える 2

0

さて、私は問題を見つけました。persistenceJS フレームワークを使用して、ローカル データベースを処理します。これにより、js オブジェクトに格納された websql データのコピーが保持され、データベースと js オブジェクトの同期が維持されます。これは時間がかかるプロセスであり、同期の後に来る「フラッシュ」ハンドラーにすべてを入れていました。

于 2012-08-28T09:24:16.920 に答える
0

また、接続を開いたままにします。IndexedDB の場合、問題を観察することなく、UI とバックグラウンド スレッドを同時に開いたままにすることができました。WebSQLも同じだと思います。JS ファイルだけを使用している場合は、独自のJavaScript ライブラリを試すことができます。これは、IndexedDB と WebSQL の両方の非常に薄いラッパーです。ただし、ライブラリは IndexedDb スタイル用に作成されています。

于 2012-09-04T13:00:19.317 に答える