@OutputCache [ASP.NET]
◆@OutputCache ディレクティブ
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
%>
ASP.NET Web フォームや、ASP.NET Web フォーム内に含まれるユーザー コントロールの出力キャッシュ ポリシーを制御します。
詳細なリファレンスは、MSDN の公式ヘルプを参照してください。
このディレクティブは、使いどころがあります。
・・・・・・てか、そもそも ASP.NET の根本の挙動がおかしいから、期待通りの挙動をさせるために、こいつでキャッシュを殺さなきゃならない、なんていうケースもあるわけで。
能動的に使えるケースと、こいつを使う必要に迫られるケースと、まあいろいろと事情があるんですが。
普通の ASP.NET Web フォームでキャッシュを制御したい場合も、もちろん使えます。
一方、使わざるを得ない状況っつーのもあります;;;。
状況によっては、Page_Load イベントハンドラに来てくれないことがあるんですよ;;;。
ASP.NET Web フォームで、Page_Load イベントハンドラに来てくんないと、もうお手上げ状態ですよね;;;。
その場合、原因のひとつとして、出力キャッシュが効いている可能性があります。
そういうときは、この @OutputCache ディレクティブを使って、問題の ASP.NET Web フォームの出力キャッシュを殺してみます。
ASP.NET Web フォームで、@OutputCache ディレクティブを使って出力キャッシュを無効にするには、以下のようにします。<%@ OutputCache Location="None" VaryByParam="None" %>
これで出力キャッシュが死にます。
こうすると、キャッシュが問題の原因だった ASP.NET Web フォームでは、どうにかこうにか、きちんと Page_Load イベントハンドラを通ってくれるようになることがあります。
Location="Any そんな感じ
Location="Any | Client うーん、Any Clientは嫌かなw
Location= Server | None | どこに、行こうか? なぁ?
Shared="True | False" Shareするか否かはJudge入れるとも居ますw
NoStore="true | false" これ系くると、Yes or Noのバイナリ原点な感覚です
毎度、いい加減なコメント でした、ご容赦下され、From 落ちこぼれ生徒 but I feel the value here as I am always describing ! でしたw
by One-for-you (2011-01-08 01:28)
落ちこぼれなんて、とんでもない。
出力キャッシュ ポリシーは非常に大事で、キャッシュが効いていると、最新データの処理に支障が出ますからねえ・・・・・・。
要所要所で出力キャッシュを殺しておかないと、思わぬ不具合を仕込んでしまいます。
by みみちゃん (2011-01-08 02:30)