あなたはあなたの仮定において正しいです。
OutputCacheディレクティブは、レンダリングされたページ全体を特定のURLに対して600秒間キャッシュするように、出力キャッシュメカニズムに指示しています。
単純な例では、おそらくクエリ文字列を使用していませんが、ディレクティブ内のVaryByParam宣言を使用すると、クエリ文字列パラメーターを指定して、そのパラメーターの異なる値が個別にキャッシュされるようにすることができます。たとえば、次の場合:
<%@ OutputCache Duration="600" VaryByParam="ProductID"%>
次に、これら3つの異なるURLはそれぞれ個別にキャッシュされ、「ProductID」パラメーターの値をまだキャッシュされていない値に変更すると、ページがASP.NETランタイムによって正しく処理およびレンダリングされるようになります。
http://www.example.com/viewproduct.aspx?ProductID=123
http://www.example.com/viewproduct.aspx?ProductID=3
http://www.example.com/viewproduct.aspx?ProductID=67
この例では、ボタンをクリックすると、ページは既にレンダリング(およびキャッシュ)されており、再度投稿しても、投稿先のURLに違いはなく、効果的に再読み込みされます。したがって、ASP.NETランタイム再レンダリングのプロセスを経ることなく、キャッシュされたページを表示します。
「VaryByParam」パラメーターの値を変更する以外に、OutputCacheディレクティブは、ページキャッシングに対するかなりの「オールオアナッシング」アプローチです。ディレクティブには「VaryByContol」属性がありますが、これは完全なASP.NET Webページではなく、ASP.NETユーザーコントロールでのみ使用できます。
あなたの質問から、それはあなたが部分的なページキャッシングを調査する必要があるように聞こえます。それか、何らかのイベントが発生したときにキャッシュを無効にするメカニズムのいずれか。これは通常、「キャッシュ依存関係」を追加することによって行われます。
そのためには、次のリンクが役立ちます。
ASP.NETページの一部のキャッシュ
ヒント/コツ:ASP.NET 2.0出力キャッシュ置換機能を使用して「ドーナツキャッシング」を実装し、
プログラムで出力キャッシュからページを削除します