MVC 3 Запрет частичного просмотра в кеш - PullRequest
1 голос
/ 05 января 2012

Я использую MVC 3 с бритвой.У меня есть некоторые частичные взгляды, которые звонят из основного вида.В Частичном представлении я хочу показать некоторые значения БД.Когда я изменяю значения БД, он показывает старые значения из кэша.Итак, как я могу остановить кеш на частичные просмотры?

 @Html.Partial("_myPartialView", Model)

thx

Ответы [ 4 ]

2 голосов
/ 05 января 2012

Ваш код, вероятно, кэширует ВСЕ (может быть кэшем браузера по умолчанию), так что вы действительно хотите кэшировать дырку от бублика, над которой работаете. Проверять, выписываться: http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3

1 голос
/ 31 января 2012
 $(function () {
 $.ajaxSetup ({
      // Disable caching of AJAX responses
      cache: false }); 
)};

Это должно сделать это!

0 голосов
/ 10 февраля 2017

В зависимости от настройки, возможно, один из возможных подходов к отключению кэширования в частичном представлении состоит в том, чтобы разбить его на отдельный клиентский вызов, т. Е. На jQuery / Ajax.

В противном случае, как насчет этого варианта темы.

Потребовалось немного времени, чтобы разобраться с этим после возвращения в MVC. Просто поместите настройки кеша непосредственно в частичное представление заголовка. Как и при отображении имени пользователя. Нет необходимости в глобальном или серверном коде.

Единственная проблема - после кэширования страницы она не будет обновляться сразу после входа в систему. Но мы сохраняем скорость, когда это необходимо при первоначальном просмотре продуктов. Хорошо, компромисс в нашем случае.

@if ( Request.IsAuthenticated)
{
        @* when we are authenticated, don't cache any more! *@
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
HttpContext.Current.Response.Cache.SetNoServerCaching();
        @*@Html.Raw(DateTime.Now.ToString())*@
@Html.ActionLink("Welcome " + ( String.IsNullOrEmpty(((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirstValue("UserName")) ? User.Identity.Name : ((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirstValue("UserName")), "Index", "Manage", routeValues: new { Area = "Store" }, htmlAttributes: new { title = "Manage"})
}
else
{
}
0 голосов
/ 05 января 2012

Приведенный выше код не использует кеш по умолчанию.Если вы используете

@Html.Partial("_myPartialView", Model)

Он отображает _myPartialView, используя данные из объекта Model без кеша.Ваша проблема должна быть вызвана чем-то другим.Может быть, код извлечения данных, который создает объект Model, использует некоторый кеш уровня данных?Было бы полезно опубликовать больше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...