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