Практическое руководство. Настройка политики кэша на основе времени

При создании политики кэша на основе времени можно настроить поведение кэширования, устанавливая значения максимального возраста, минимальной актуальности или даты синхронизации кэша. Объект HttpRequestCachePolicy предоставляет несколько конструкторов, позволяющих определять допустимые сочетания этих значений.

Создание политики кэша на основе времени с использованием даты синхронизации кэша

Создание политики кэша на основе времени с использованием даты синхронизации кэша осуществляется за счет передачи объекта DateTime в конструктор HttpRequestCachePolicy:

public static HttpRequestCachePolicy CreateLastSyncPolicy(DateTime when)
{
    var policy = new HttpRequestCachePolicy(when);
    Console.WriteLine("When: {0}", when);
    Console.WriteLine(policy.ToString());
    return policy;
}
Public Shared Function CreateLastSyncPolicy([when] As DateTime) As HttpRequestCachePolicy
    Dim policy As New HttpRequestCachePolicy([when])
    Console.WriteLine("When: {0}", [when])
    Console.WriteLine(policy.ToString())
    Return policy
End Function

Выход аналогичен приведенному ниже:

When: 1/14/2004 8:07:30 AM
Level:Default CacheSyncDate:1/14/2004 8:07:30 AM

Создание политики кэша на основе времени с использованием минимальной актуальности

Чтобы создать политику кэша на основе времени с использованием минимальной актуальности, укажите MinFresh в качестве значения параметра cacheAgeControl и передайте объект TimeSpan в конструктор HttpRequestCachePolicy:

public static HttpRequestCachePolicy CreateMinFreshPolicy(TimeSpan span)
{
    var policy = new HttpRequestCachePolicy(HttpCacheAgeControl.MinFresh, span);
    Console.WriteLine(policy.ToString());
    return policy;
}
Public Shared Function CreateMinFreshPolicy(span As TimeSpan) As HttpRequestCachePolicy
    Dim policy As New HttpRequestCachePolicy(HttpCacheAgeControl.MinFresh, span)
    Console.WriteLine(policy.ToString())
    Return policy
End Function

Для следующего вызова:

CreateMinFreshPolicy(new TimeSpan(1,0,0));

Результат выглядит так:

Level:Default MinFresh:3600

Создание политики кэша на основе времени с использованием минимальной актуальности и максимального возраста

Чтобы создать политику кэша на основе времени с использованием минимальной актуальности и максимального возраста, укажите MaxAgeAndMinFresh в качестве значения параметра cacheAgeControl и передайте два объекта TimeSpan в конструктор HttpRequestCachePolicy. Один из этих объектов задает максимальный возраст ресурсов, а второй — минимально допустимую актуальность объекта, возвращаемого из кэша:

public static HttpRequestCachePolicy CreateFreshAndAgePolicy(TimeSpan freshMinimum, TimeSpan ageMaximum)
{
    var policy = new HttpRequestCachePolicy(HttpCacheAgeControl.MaxAgeAndMinFresh, ageMaximum, freshMinimum);
    Console.WriteLine(policy.ToString());
    return policy;
}
Public Shared Function CreateFreshAndAgePolicy(freshMinimum As TimeSpan, ageMaximum As TimeSpan) As HttpRequestCachePolicy
    Dim policy As New HttpRequestCachePolicy(HttpCacheAgeControl.MaxAgeAndMinFresh, ageMaximum, freshMinimum)
    Console.WriteLine(policy.ToString())
    Return policy
End Function

Для следующего вызова:

CreateFreshAndAgePolicy(new TimeSpan(5,0,0), new TimeSpan(10,0,0));  

Результат выглядит так:

Level:Default MaxAge:36000 MinFresh:18000  

См. также