2011-12-05 12 views
3

iis Webサーバーでページレンダリングをキャッシュできますが、(出力に影響しない)クエリ文字列値は受け取り、データベースに書き込むことはできますか?ページを提供するためにレンダリングがデータベースの実行を待つ必要はありません。可能であれば、どうすれば実装できますか?.NETのページキャッシングは依然としてクエリ文字列を受け取ります

たとえば、さまざまなアフィリエイトおよび検索マーケティングデータをクエリ文字列で追跡し、マスターページコードの背後では、指定されたクエリ文字列データをデータベースに書き込みます。ページの出力はユーザーにはまったく変更されません(ただし、qsパラメーターに基づいてCookieを設定することがあります)。

私の理解では、ページレンダリングは、ページをレンダリングするためにデータベースのトリップが完全に実行されるまで待つ必要があります。それは本当ですか?

+0

おそらくこれはGlobal.asaxで行うことができますか? –

答えて

1

一般的にはい、キャッシングをどのように処理するかによって異なります。

まず、そのトラッキング項目を所属する場所(HttpModule)に移動する必要があります。ページ自体は心配する必要はありません。第二に、おそらく調べたいのは何らかの火災であり、サービスコールやメッセージキューイングを忘れることです。これにより、データベースはブロッキング操作ではなく、非ブロッキング操作として書き込まれます。

操作非ブロッキングを作るためのいくつかのオプション:

  • あなたが実際にWebサービスへの書き込みをしている場合、正当に評価[OperationContract(IsOneWay = true)]装飾があります。生成されたプロキシに呼び出しを忘れ、応答を待つことなく忘れるように指示します。
  • もう1つのオプションは、非同期ADO.NETビット、特にBeginExecuteNonQueryを使用することです。コールバックを処理しない場合、これはあなたのスレッドを実行するだけです。
  • スレッドを生成し、それをノンブロッキングの方法で処理できます。このスレッドでエラーを処理することに本当に注意してください。処理されない例外はアプリドメインを取り除きます。
+0

ノンブロッキングデータベースコールはどのように実装しますか? –

+0

はちょっと詳細を追加しました。 –

+0

驚くばかり!手伝ってくれてありがとう。 –

関連する問題