0

ほとんどの場合オフラインで使用するアプリを作成しています。私たちがしようとしているのは、ライブ データベースからいくつかのテーブルのコピーを作成し、定期的にそのデータベースを PhoneGap アプリケーションにコピーすることです (PhoneGap からライブにプッシュすることはありません)。

アプリを初めて実行するときにすべてのレコードを PhoneGap に挿入し (ユーザーはオフィスで WiFi にアクセスできます)、最後の「同期」および更新以降に更新された Live DB のレコードを体系的に判断できます。これらのレコードは PhoneGap アプリにありますが、ライブ DB をファイルにブルート フォース ダンプして、ローカルの PhoneGap コピーを置き換えることができれば素晴らしいと思いませんか?

4

1 に答える 1

1

ローカルに保存する必要があるデータの量はわかりませんが、5 MB に制限できる場合は、ローカル データベースの代わりに使用できjsonますlocalStorage

アプリがデータをリクエストするときは、最後にタイムスタンプを付けて一度にすべてを返し、それを使用して更新されたデータのみをスマートに返します。次のような呼び出しyourhost.com/retrieveDataは、すべてのデータをyourhost.com/retrieveData/timestampParam返し、タイムスタンプの後に更新されたデータのみを返します。

次のようなものを返します:

{ "table1" : [{"col1":"data1","col2":"data2"},{"col1":"data3","col2":"data4"}],
  "table2" : [{"col3":"data5","col4":"data6"},{"col3":"data5","col4":"data6"}], 
  "timestamp" : 1234567 } //this should be optimized for your needs, it's just a generic example.

アプリの起動時に、何よりも先に次の行に沿って何かを実行すると、アプリが常に最新の状態に保たれます。

Check if the data is stored
    If there isn't, or if the user is online or if the timestamp is too old, or you can perform any check you might need here
       Retrieve the data again using the stored timestamp
       Update the local data
       Store the timestamp returned
    If none of the above applies, the app is good to run

私はいくつかのアプリでそのアプローチを使用しました。実装と保守が簡単なため、データベースよりもこれを選択しました。

于 2013-07-31T16:41:39.263 に答える