Я использую OutputCache в MVC, но у меня возникли трудности с кэшированием, когда к URL-адресу добавлена метка времени.OutputCache Ignore Timestamp
В частности, компонент AJAX jQuery добавляет _ = 21321423432 в конец URL-адреса.
Каждый раз, когда я вызываю URL-адрес действия, он всегда переходит в действие вместо того, чтобы возвращать кешированный элемент.
Я использую элементы VarybyParam VarByCustom & для кэширования на основе зарегистрированного пользователя и дат начала и окончания.
Действие
[OutputCache(CacheProfile = "FeedCache")]
public async Task<JsonResult> Feed(DateTime start, DateTime end)
{
//Do something
return Json(result, JsonRequestBehavior.AllowGet);
}
Config
<add name="FeedCache" duration="600" varyByParam="start;end" varyByCustom="user" location="Server" />
Global.asmx
public override string GetVaryByCustomString(HttpContext context, string custom)
{
//
// Vary by logged in user
//
if (custom == "user")
{
return "user=" + context.User.Identity.Name;
}
return base.GetVaryByCustomString(context, custom);
}
Я был под оттиском иона, это будет кэшировать специально для пользователя & начальные и конечные параметры, однако это не так. Есть что-то, что мне не хватает?
Спасибо за ваш ответ - К сожалению, я не могу рисковать кэшированием данных браузером, поскольку он содержит данные пользователя. – heymega
Это не подвергает риску любые данные, которые просто передают управление кешем на сервер. Таким образом, если у вас установлен OutputCache, он будет отвечать за стратегию кеширования –
Кодирует кеширование браузеров GET, поэтому вызов никогда не будет выполняться на сервере. – heymega