2012-03-01 1 views
0

私は、同様のパターンを持ついくつかのアプリケーションを持っています。私はフローをどのように設計するのか考えていますが、私により良い解決策を提供してくれるものを望みます。私的なデータを更新するためのデザイン提案はありますか?

アプリは、データを配信する簡単なWebページを通じて、自分のサーバー上の小さなデータベースにアクセスする必要があります。データの種類は、約100レコード(約8000-900バイト)で構成され、データ・インストゥルメントの名前と特性に似ています。計器がリストに追加されたときのように、データは数ヶ月の期間で約1回だけ変化します。アプリは、最初に選択するユーザーのリストを表示するので、最初にこのリストを見つける必要があります。私の質問は、アプリケーションに最適なデータを取得する方法です。

これまでのところ、http接続でデータを取得して初めてデバイスのプライベートファイルに保存するようにしました。その後、毎回、アプリがプライベートファイルが作成されているかどうかを確認した後、プライベートファイルから読み取るだけです。これは、毎回サーバー接続を待つ必要がないため、データのロードを高速化するはずです。

新しい音源を追加するまでは問題ありません。その時点で、私は、新しいデータのコピーとファイルの再構築のために、アプリケーションをサーバーに戻す必要があります。私の解決策は、アプリケーションがプライベートファイルが存在してデータ状態の変更をサーバーに照会するかどうかを判断する前に、単純な要求(YまたはN)を行うことでした。変更があった場合、アプリはプライベートファイルを削除し、データの新しいコピーを取得します。

このアプローチでは、サーバーに常に少なくとも1つの要求があることを意味します。毎回新鮮なコピーを入手する方が良いでしょうか?使用する他のテクニックはありますか?提案?

答えて

0

このケースは実際にはHTTP仕様で明示的に扱われています - 「If-Modified-Since」HTTPヘッダーには「日付x以降に変更されたデータのみを送信します」と記載されています。データが変更されていない場合、サーバーは「304 Not Modified」のステータスを返す必要があります。

ので、擬似コードで:

App starts 
App issues HTTP request with "If-modified-since" header 
Server checks if data was modified 
if YES: 
    server responds with new data 
    app deletes old cache file, replaces with new file 
if NO: 
    server issues 304 status 
App shows cache data 
+0

非常に興味深いです!私はそれを確かに調べるでしょう。私は、各アプリケーションユーザーが変更された最後のデータファイルの日付を要求に入れると思っています。次に、ステータスを確認して、提案するようにします。私はより良い解決策を与えることを求めることが分かっていた。 –

+0

これは仕事に就くのが難しい解決策のようです。標準のASPでWebページを生成するIIS 6サーバーがあります。ヘッダーで最後に変更された日付を取得できますが、実際の.aspページの日付になります。ヘッダーに入れた日付は無視されるようです。 –

+0

http://jagbarcelo.blogspot.com/2009/03/conditional-get-and-etag-implementation.html –

関連する問題