RequestCacheLevel Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает поведение кэширования ресурсов, полученных с помощью класса WebRequest и производных от него.
public enum class RequestCacheLevel
public enum RequestCacheLevel
type RequestCacheLevel =
Public Enum RequestCacheLevel
- Наследование
Поля
BypassCache | 1 | Выполняет запрос, используя сервер. Записи не берутся из кэшей, не добавляются в кэши и не удаляются из кэшей между клиентом и сервером. Таким является поведение кэша по умолчанию, указанное в файле конфигурации компьютера, который поставляется с платформой .NET Framework. |
CacheIfAvailable | 3 | Выполняет запрос ресурса из кэша, если ресурс доступен, в противном случае отправляет запрос ресурса на сервер. Если запрошенный элемент доступен в каком-либо кэше между клиентом к сервером, запрос может быть выполнен промежуточным кэшем. |
CacheOnly | 2 | Выполняет запрос, используя ресурс из локального кэша, и не отправляет запрос элемента, которого нет в кэше. Если указан этот уровень политики кэша, в случае отсутствия элемента в клиентском кэше генерируется исключение WebException. |
Default | 0 | Выполняет запрос ресурса с помощью кэшированной копии ресурса или путем отправки запроса ресурса на сервер. Выполняемое действие определяется текущей политикой кэша и временем существования содержимого кэша. Это уровень кэша, который должен использоваться большинством приложений. |
NoCacheNoStore | 6 | Никогда не выполняет запрос, используя ресурсы из кэша, и не кэширует ресурсы. Если ресурс есть в локальном кэше, он удаляется. Этот уровень политики указывает, что ресурс должен быть удален из промежуточных кэшей. В протоколе кэширования HTTP для этого используется директива управления кэшем |
Reload | 5 | Выполняет запрос, используя сервер. Ответ может быть сохранен в кэше. В протоколе кэширования HTTP для этого используется директива управления кэшем |
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
использовании последующие запросы для того же ресурса будут использовать кэшированную копию, если метка времени для кэшированного ресурса совпадает с меткой времени ресурса на сервере.
Копия ресурса добавляется в кэш, только если поток ответа для ресурса извлекается и считывается в конец потока. Поэтому другой запрос к тому же ресурсу может использовать кэшированную копию в зависимости от уровня политики кэша по умолчанию для этого запроса.