ASP.NET MVC 2 отключить кеш для кнопки браузера назад при частичном просмотре
Я использую Html.RenderAction<CartController>(c => c.Show());
на моей главной странице, чтобы отобразить корзину для всех страниц. Проблема в том, что когда я добавляю товар в корзину, а затем нажимаю кнопку возврата в браузере. Он показывает старую корзину (из кэша), пока я не нажму кнопку обновления или не перейду на другую страницу.
Я пробовал это, и он отлично работает, но он отключает кэш глобально для всей страницы и для всех страниц моего сайта (так как этот метод действия используется на главной странице). Мне нужно включить кэш для нескольких других частичных представлений (методы действий) по соображениям производительности.
Я не хотел бы использовать клиентский скрипт с AJAX для обновления корзины (и вида входа в систему) при загрузке страницы - но это единственное решение, о котором я могу думать прямо сейчас.
Кто-нибудь знает лучше?
2 ответа
Если вы не используете iframe или ajax, невозможно отключить кеш браузера только для части страницы. Браузер просто извлекает данные из своего кеша, и вы либо отключаете кеш страниц, либо нет.
Кеширование пончиковых дыр в ASP.NET MVC
Если вы хотите кэшировать всю свою страницу, кроме корзины. Вы можете реализовать элемент управления view, содержащий корзину. и удалите политику кэширования из этого элемента управления представлением.
<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Joke>>" %>
<%@ OutputCache Duration="100" VaryByParam="none" %>
<ul>
<% foreach(var joke in Model) { %>
<li><%= Html.Encode(joke.Title) %></li>
<% } %>
</ul>
Хаакед объясняет это более подробно здесь.
Надеюсь, это поможет вам.