2009-05-28 13 views
0

はあり内蔵のasp.netの方法、条件付きで、私は次のロジックたい例えば、ページを提供するために:私は、ページを 生成するセッションデータがある場合は何もセッションデータIが存在しない場合ASP.NETに条件付きキャッシュがありますか?

を キャッシュされたページを配信します。

私はこのために組み込みのasp.netメカニズムについて知りたいだけです。それが存在しない場合、私はおそらく単に私のページを手動でキャッシュし、セッションデータの可用性に基づいて、各リクエストに対してそれを提供するかどうかを決定するでしょう。

答えて

2

セッションデータを持つユーザーのための新鮮な出力を生成するための組み込みサポート(varyByParamなど)はありません。

お勧めのとおり、手動でページをキャッシュすることをお勧めします。私はおそらくGlobal.asaxPreRequestHandlerExecuteイベントハンドラで、ユーザーのセッション状態を判断して、多分設定します:

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
0

karmabombingのリスクで、私は本当に、キャッシングに対するこのアプローチは好きではありません。

私の場合、GETリクエストが行われた場合、サーバーはそれに誠実に応答する必要があります。第1の目的は、冗長リクエストをまったく受けないようにすることで、httpヘッダーによってページレベルでのキャッシュを制御する必要があります。 - サーバー/帯域幅のリソースを完全に停止させたくありません。

ページを構成するためのリソースであるオブジェクトをキャッシングすると完全に後退する可能性がありますが、ページ全体をキャッシュするための大きな引数はありません。

ヘッダーを尊重します。

+0

技術的にエンティティタグ(HTTP 1.1)は、あなたが言及したものに反することなくここで使用できます(これは私が同意します)。 –

+0

HEADリクエストと同じように、それは確かにサポートについてです - 私はコンセプトがget goから欠陥があると言っています – annakata

関連する問題