2

私は最初の ASP.NET MVC プロジェクトを行っています。(実際、記録のために、これはあらゆる種類の私の最初の制作 Web サイトです)。

これは、HTML 5 を対象とするモバイル Web ページです。

このページは、いくつかの「高価な」情報を検索します。最初に、html 5 ジオコーディング機能を使用して、顧客の緯度経度をブラウザーから取得します。

その情報をコントローラーに渡します。そのコントローラーは、Google Maps API を使用して都市と州を (位置モデルに) 記入し、それをビューで使用します。

したがって、このデータは 2 つの点で高価です。1 つ目は検索に時間がかかること、2 つ目は Google API の場合、Google が 1 日に実行できる呼び出しの数を制限しているため、文字通り無料ではありません。

MVC は、http がステートレス プロトコルであるという事実を含め、Web を「受け入れる」ように設計されていることを理解しています。

とはいえ、この高価なデータを、それを必要とするすべてのエンドポイントでページが読み込まれるたびに取得する必要は避けたいと考えています。さらに、追跡したいもう 1 つの状態は、データが既にフェッチされているという事実です。

MVC 3 Web アプリケーションでこれを達成するための最良の方法/ベスト プラクティスは何ですか? ロケーションのモデルには 4 つのデータ ポイント (緯度経度市区町村) があり、5 番目のデータ ポイント (取得されたデータ) があるため、クエリ文字列を使用してこれを実行したり、これらすべてのデータ ポイントのルートを作成したりしたくないですか?

これは一般的なニーズだと確信していますが、正直なところ、それに取り組む方法がわかりません。どんな助けでも大歓迎です。

セス

4

6 に答える 6

3

Google への API 呼び出しをキャッシュしたいようです。

http://msdn.microsoft.com/en-us/library/18c1wd61(v=vs.71).aspx

Google から取得したオブジェクトをキャッシュに保存し、新しいコントローラー イベントで呼び出すことができます。また、Google からのオブジェクトと、データを取得したかどうかを示す bool を持つ別のオブジェクトを作成することもできます。

キャッシュが最善の策であるように私には思えます。

于 2012-05-02T20:30:11.093 に答える
2

これは「高価な」データですが、それでも長期間保持されないため、次のことができます。

  • セッション状態を使用する
  • データをキャッシュに入れ、次のいずれかを行います
    • キャッシュから「高価な」データを取得できるようにCookieを設定する
    • 各クエリに固有のキャッシュ キーを使用します (緯度経度の都市州?)
  • データ(「取得したデータ」)をクライアントに保存します(サーバー側で永続化していないように見えるため)

私の個人的な好みは、一意のキーを持つサーバー側のキャッシュです。

于 2012-05-02T20:30:51.420 に答える
2

ページ間を渡す代わりに、ケースで使用可能な場合はセッション状態に保存できます。

于 2012-05-02T20:28:51.630 に答える
1

高価なデータをキャッシュに保存し、Google に送信するパラメータによってキャッシュ ID を作成します。キャッシュ ID は、場所ごとに一意である必要があります

于 2012-05-02T20:30:04.137 に答える
0

試す

Session[xxx]=xxx;

また

Application[xxx]=xxx;

代わりは

于 2012-05-02T20:31:34.820 に答える
0

別のオプションはhtml5 storageです。ただし、ターゲットブラウザがそれをサポートしているかどうかを確認する必要があります. このアプローチの利点は、サーバーがセッションまたはデータベースでこのデータを追跡しないことです。実際、サーバーはクライアントのストレージについてまったく知りません。

于 2012-05-02T20:31:49.423 に答える