「リスト」と呼ばれるコントローラー/アクションがあります。このメソッドには with 属性が組み込まれています
[OutputCache(期間 = 3600、VaryByParam = "*")]
このアクションには 3600 秒のキャッシュがあります。これは、データベースからデータをロードし、1 時間ごとに (多かれ少なかれ) 変更されるためです。
私のマスターレイアウト(私のマスターページ)は、認証されたユーザーの場合はヘッダートップバーにUserNameを表示するか、ユーザーが認証されていない場合は静的テキストUserを表示するため、Layout.cshtml に問題があります。以下のコードを参照してください。
@Html.Raw(WebSecurity.IsAuthenticated ? WebSecurity.CurrentUserName : "ユーザー")
誰かが認証されると、ページ上の最初のアクセスの名前がキャッシュされ、すべてのユーザーが認証されているかどうかにかかわらず、最初に認証されたユーザーのユーザー名がヘッダーの上部バーに表示されます。これは非常に悪いです!
指定された Controller/Action からのデータのみを使用して、layout.cshtml キャッシュは行われないと思いました。
どうすれば修正できますか?
私にとって非常に重要なので、OutputCache を削除するのは好きではありません。ヘッダートップバーは、レイアウトページが組み込まれているため、すべてのユーザーに共通です。