ASP.NET MVC 2 отключить кеш для кнопки браузера назад при частичном просмотре - PullRequest
5 голосов
/ 15 мая 2010

Я использую Html.RenderAction<CartController>(c => c.Show()); на главной странице, чтобы отобразить корзину для всех страниц. Проблема заключается в том, что я добавляю товар в корзину, а затем нажимаю кнопку возврата браузера. Он показывает старую корзину (из кэша), пока я не нажму кнопку обновления или не перейду на другую страницу.

Я пробовал это , и оно отлично работает, но отключает кэш глобально для всей страницы и для всех страниц моего сайта (поскольку этот метод действия используется на главной странице). Мне нужно включить кэш для нескольких других частичных представлений (методов действия) по соображениям производительности.

Мне бы не хотелось использовать клиентский скрипт с AJAX для обновления корзины (и вида входа в систему) при загрузке страницы - но это единственное решение, которое я могу придумать прямо сейчас.

Кто-нибудь знает лучше?

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Если вы не используете iframe или ajax, невозможно отключить кэш браузера только для части страницы.Браузер просто извлекает данные из своего кеша, либо вы отключаете кеш страниц, либо нет.

1 голос
/ 15 мая 2010

Кэширование пончиковых отверстий в 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>

Хаакед объясняет это более подробно здесь .

Надеюсь, это поможет вам.

...