Поделиться через


RequestCacheLevel Перечисление

Определение

Указывает поведение кэширования ресурсов, полученных с помощью класса WebRequest и производных от него.

public enum class RequestCacheLevel
public enum RequestCacheLevel
type RequestCacheLevel = 
Public Enum RequestCacheLevel
Наследование
RequestCacheLevel

Поля

BypassCache 1

Выполняет запрос, используя сервер. Записи не берутся из кэшей, не добавляются в кэши и не удаляются из кэшей между клиентом и сервером. Таким является поведение кэша по умолчанию, указанное в файле конфигурации компьютера, который поставляется с платформой .NET Framework.

CacheIfAvailable 3

Выполняет запрос ресурса из кэша, если ресурс доступен, в противном случае отправляет запрос ресурса на сервер. Если запрошенный элемент доступен в каком-либо кэше между клиентом к сервером, запрос может быть выполнен промежуточным кэшем.

CacheOnly 2

Выполняет запрос, используя ресурс из локального кэша, и не отправляет запрос элемента, которого нет в кэше. Если указан этот уровень политики кэша, в случае отсутствия элемента в клиентском кэше генерируется исключение WebException.

Default 0

Выполняет запрос ресурса с помощью кэшированной копии ресурса или путем отправки запроса ресурса на сервер. Выполняемое действие определяется текущей политикой кэша и временем существования содержимого кэша. Это уровень кэша, который должен использоваться большинством приложений.

NoCacheNoStore 6

Никогда не выполняет запрос, используя ресурсы из кэша, и не кэширует ресурсы. Если ресурс есть в локальном кэше, он удаляется. Этот уровень политики указывает, что ресурс должен быть удален из промежуточных кэшей. В протоколе кэширования HTTP для этого используется директива управления кэшем no-cache.

Reload 5

Выполняет запрос, используя сервер. Ответ может быть сохранен в кэше. В протоколе кэширования HTTP для этого используется директива управления кэшем no-cache и заголовок Pragma no-cache.

Revalidate 4

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

Примеры

В следующем примере кода создается политика, которая возвращает ресурс только в том случае, если он находится в кэше.

static WebResponse^ GetResponseFromCache( Uri^ uri )
{
   RequestCachePolicy^ policy = gcnew RequestCachePolicy( RequestCacheLevel::CacheOnly );
   WebRequest^ request = WebRequest::Create( uri );
   request->CachePolicy = policy;
   WebResponse^ response = request->GetResponse();
   Console::WriteLine( L"Policy level is {0}.", policy->Level );
   Console::WriteLine( L"Is the response from the cache? {0}", response->IsFromCache );
   return response;
}
public static WebResponse GetResponseFromCache(Uri uri)
{
     RequestCachePolicy policy =
        new  RequestCachePolicy( RequestCacheLevel.CacheOnly);
    WebRequest request = WebRequest.Create(uri);
    request.CachePolicy = policy;
    WebResponse response = request.GetResponse();
    Console.WriteLine("Policy level is {0}.", policy.Level.ToString());
    Console.WriteLine("Is the response from the cache? {0}", response.IsFromCache);
    return response;
}

Комментарии

Члены этого перечисления используются для инициализации RequestCachePolicy объектов . Текущий RequestCachePolicy параметр объекта доступен в свойстве HttpRequestCachePolicy.Level .

Это BypassCache значение является поведением кэша по умолчанию, указанным в файле конфигурации компьютера, поставляемом с платформа .NET Framework. Записи не берутся из кэшей, не добавляются в кэши и не удаляются из кэшей между клиентом и сервером.

Свойство HttpWebRequest.DefaultCachePolicy используется для получения или задания политики кэша по умолчанию для HttpWebRequest экземпляров. Свойство WebRequest.CachePolicy используется для получения или задания политики кэша по умолчанию для WebRequest экземпляров . Свойство WebRequest.CachePolicy используется для получения или задания политики кэша для определенного запроса.

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

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

Применяется к

См. также раздел