コントローラーアクションの上にOutputCache属性を定義して、サーバーがさまざまなユーザーに同じ応答をすばやく提供できるようにします。Buそれはページ全体をキャッシュします。つまり、を返すアクションをキャッシュした場合、マスターページもキャッシュされますView()
。したがって、マスターページの上部にあるユーザーアカウント情報は、すべてのユーザーによって共有されます。マスターページ_Layout.cshtmlではなく、コンテンツページのみをキャッシュしたい。どうすればそれを除外できますか?
編集:私が問題を抱えている部分はこれです:
@if(Request.IsAuthenticated) {
<text>Hello <strong>@User.Identity.Name</strong>!</text>
@: |
@Html.ActionLink("Index", "Index", "Account")
@: |
@Html.ActionLink("Logout", "Logout", "Account")
}
else
{
@:|
@Html.ActionLink("Login", "Login", "Account")
}
コントローラアクションをキャッシュすると、返されるビューにもこのユーザーログイン部分がキャッシュから運ばれるため、ほとんどすべてのユーザーに間違った敬礼が与えられます。ページがキャッシュされている場合でも、この部分を動的に生成するにはどうすればよいですか?