Я пытаюсь кэшировать верхнюю панель навигации, которая содержит закрепленные панели мониторинга и изображение профиля пользователя, я использую помощник по метке кэша для кэширования верхней панели навигации, но когда пользователь меняет закрепленные панели мониторинга или изображение своего профиля, я хочу сделать недействительнойкеш для загрузки нового изображения профиля.
<cache vary-by="@userService.ProfileChanged">
<header class="header">
<nav class="navbar fixed-top navbar-light bg-light d-flex justify-content-between">
<ul class="main-nav-icons list-unstyled d-flex flex-fill mr-3">
<cache vary-by="@userService.PinnedDashboardsChanged">
@await Component.InvokeAsync("UserDashboards", new { type = "pinned" })
</cache>
<li><button class="btn btn-unstyled left-nav-toggler"><i class="glyphicons glyphicons-option-horizontal text-primary1"></i></button></li>
</ul>
<cache vary-by="@userService.ProfileChanged">
<ul class="d-flex justify-content-end align-items-center user-menu mb-0 flex-fill list-unstyled">
<li>
<ul class="user-menu-details d-flex mr-2 list-unstyled mb-0 flex-column flex-md-row">
<li class="list-inline-item">@(userService.User.UserTypeId == 1 ? "Dios Kernel" : userService.User.Environment.Name)</li>
<li class="list-inline-item"> <a href="@Url.Action("Index", "Profile")">@userService.User.FullName</a></li>
</ul>
</li>
<li class="list-inline-item user-avatar">
<div class="dropdown">
<a class="dropdown-toggle avatar-img" data-toggle="dropdown" style="background-image:url('@(string.IsNullOrEmpty(userService.User.ProfilePhoto) ? "/images/user-pic.png" : userService.User.ProfilePhoto)')">
@*<img src="@(string.IsNullOrEmpty(userService.User.ProfilePhoto) ? "/images/user-pic.png" : userService.User.ProfilePhoto)" alt="@userService.User.FullName">*@
</a>
<div class="dropdown-menu">
<a class="dropdown-item" onclick="editProfile('@Url.Action("_Edit","Profile")')">
<i class="fas fa-user-alt"></i>
Edit Profile
</a>
<a class="dropdown-item" onclick="resetPassword('@Url.Action("_ResetPassword","Account")')">
<i class="fas fa-lock"></i>
Change Password
</a>
<a class="dropdown-item" href="@Url.Action("Logout","Account")">
<i class="fas fa-sign-out-alt"></i>
Logout
</a>
</div>
</div>
</li>
</ul>
</cache>
</nav>
</header>
</cache>
Я использовал переменное свойство и свойство ProfileChanged, которое я изменяю true, когда пользователь обновляет профиль, но когда я сталкиваюсь со странным поведением, котороепервое обновление на любой странице показывает новое изменение, а на другом - нет, я ожидаю, что первый запрос после изменения повторно выполнит навигацию для всех других страниц.