Честно, столько языков основано на синтаксисе C, с которым это - хорошая вещь быть знакомым. Я занял бы неделю или два для ознакомления себя с C независимо.
Однако я действительно просто преподавал мне Objective C, и я должен быть честным: Я не нашел свой опыт C быть столь же полезным, как я буду думать. Objective C был определенно открытием глаза для меня.
Читал исходный код OutputCacheAttribute
, и я не думаю, что там есть простой способ сделать это
Скорее всего, вам понадобится создать собственное решение.
Вы можете создать собственный фильтр кэша вместо стандартного фильтра OutputCache. Как показано ниже, обратите внимание, что здесь можно установить скользящее истечение срока. Предостережение в том, что я не использовал это для скользящего истечения срока, но хорошо работает для других вещей.
public class CacheFilterAttribute : ActionFilterAttribute
{
private const int Second = 1;
private const int Minute = 60 * Second;
private const int Hour = 60 * Minute;
public const int SecondsInDay = Hour * 24;
/// <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 int DurationInDays
{
get { return Duration / SecondsInDay; }
set { Duration = value * SecondsInDay; }
}
public CacheFilterAttribute()
{
Duration = 10;
}
public override void OnActionExecuted(
ActionExecutedContext filterContext)
{
if (Duration <= 0) return;
HttpCachePolicyBase cache =
filterContext.HttpContext.Response.Cache;
TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration);
cache.SetCacheability(HttpCacheability.Public);
cache.SetExpires(DateTime.Now.Add(cacheDuration));
cache.SetMaxAge(cacheDuration);
cache.SetSlidingExpiration(true);
cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
}
}