У меня есть меню на моем сайте, которое меняется в зависимости от того, вошел ли пользователь в систему или нет. При кэшировании в браузере меню «застревает» в любом состоянии и вводит пользователей в заблуждение.
Они войдут в систему, но меню не обновится, потому что оно все еще кэшируется в состоянии без проверки подлинности ... и наоборот.
Как это обычно обрабатывается? Можем ли мы обновить кэш браузера пользователя из нашего кода? Или я просто не разрешаю кеширование в браузере? (лучше использовать, очень хороший удар по скорости).
Обновление
Вот как настроить кэширование на стороне клиента в моем приложении asp.net mvc 2:
public class CacheFilterAttribute : ActionFilterAttribute {
/// <summary>
/// Gets or sets the cache duration in seconds. The default is 10 seconds.
/// </summary>
/// <value>The cache duration in seconds.</value>
public int Duration { get; set; }
public CacheFilterAttribute() { Duration = 10; }
public override void OnActionExecuted(ActionExecutedContext filterContext) {
if (Duration <= 0) return;
var cache = filterContext.HttpContext.Response.Cache;
var cacheDuration = TimeSpan.FromSeconds(Duration);
cache.SetCacheability(HttpCacheability.Public);
cache.SetExpires(DateTime.Now.Add(cacheDuration));
cache.SetMaxAge(cacheDuration);
cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
}
}
А затем примените [CachFilter (Duration = 60)] к моим действиям. (обратите внимание, я получил код выше из Блог Кази Манзура Рашида