SurfTide7のウェザー情報取得タイミングについて

SurfTide7(iOS/Android共通)は有償で「World Online Weather」からオンラインで気象情報を取得しています。
このサービスには制限が有り、1日に一定数のリクエストしか受け付けてくれません。制限数を超えると情報が取得できなくなります。そうすると、このアプリを利用しているみんなが困ります。
気象情報はだいたい6時間毎に更新されるので、同じ地点で6時間以内に何度リクエストしても同じデータが戻るだで、その分はムダなリクエストになります。

以上のような理由により、アプリはダイレクトに「World Online Weather」にアクセスするのでなく、自前のサーバ(以下キャッシュサーバ)を経由してリクエストします。
このキャッシュサーバから「World Online Weather」へリクエストするのですが、キャッシュサーバはリクエストしたデータを一定時間保存するようにしています。つまり、キャッシュサーバが保存している情報が古くならない限りは「World Online Weather」へリクエストするのではなく、キャッシュサーバで保存しているデータをアプリに戻します。
この保存期間が6時間になっています。ただし日付をまたがって保存することはありません。

キャッシュサーバはアプリを使っている全てのユーザーから気象情報のリクエストを受けます。
たとえば、Aさんが「江ノ島」のデータをリクエストしたとします。このとき、その日に誰もまだ「江ノ島」のデータをリクエストしてなければ、キャッシュサーバは「World Online Weather」へリクエストし取得したデータを保存します。
次に、Bさんが同じ「江ノ島」のデータをリクエストすると、キャッシュサーバは保存しているデータが6時間を経過していない場合(且つ同じ日付の場合)は保存データ(つまりAさんがリクエストした時間のデータ)をアプリに戻します。
アプリで表示している更新時間は(下記画像の赤枠部分)、キャッシュサーバでデータを保存した時間になってます。

IMG_6932.png

ざっと説明すると、キャッシュサーバはこのような手法でムダなリクエストを出すことなく気象情報を取得しています。

さらに、アプリ(デバイス側)でもデータは保存してます。
一定時間はデータが変わらないわけですから、今度はアプリから見ると毎度データをサーバにリクエストするのはムダです。パケットも消費するしバッテリーも消費しますから。
なので、アプリ側では一度サーバからデータを取得すると3時間を経過していないと(ウィジェットは1時間)キャッシュサーバへリクエストしないように作っています。
キャッシュサーバで保存している時間より短いのは、複数のユーザーがキャッシュサーバへアクセスするので、必ずしも自分がリクエストした時間から6時間ではなく、もっと早く更新されるかも知れないからです。 アプリの設定で「キャッシュ削除」を処理すると、アプリ保存データのクリアになります。キャッシュサーバには影響しないので、アプリ側のキャッシュを削除しても必ずしも更新日付が変わるわけではありません。

キャッシュサーバは2機別々のロケーションで稼働しています。(まぁレンタルですけど)
どちらかのサーバが死んだらアプリの設定から切り替えられるようになってます。
プライマリが「PINEAPPLE」でセカンダリが「TANGERINE」です。どちらを使っても構わないのですが、それぞれでデータが保存されているので切り替えるとデータの更新日付も変わります。

当然ですが、キャッシュサーバで保存しているデータをアプリに戻す方が表示のレスポンスが早いです。
なので、早朝に「あれ?データ取得がちょっと遅いな??」と感じて、取得したデータの更新時間がオンタイムなら、世界中でその場所のデータを取得した最初ユーザーになります。きっとその日に何か良いことがあります(笑)

長い文章を読んで頂いてありがとうございます。
なるべくコンピュータ用語を使わないで書いたのですが、何となく解っていただけたでしょうか?