HttpRequestCacheLevel Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает поведение кэширования ресурсов, полученных по протоколу HTTP.
public enum class HttpRequestCacheLevel
public enum HttpRequestCacheLevel
type HttpRequestCacheLevel =
Public Enum HttpRequestCacheLevel
- Наследование
Поля
BypassCache | 1 | Выполняет запрос, используя сервер. Записи не берутся из кэшей, не добавляются в кэши и не удаляются из кэшей между клиентом и сервером. Записи не берутся из кэшей, не добавляются в кэши и не удаляются из кэшей между клиентом и сервером. Таким является поведение кэша по умолчанию, указанное в файле конфигурации компьютера, который поставляется с платформой .NET Framework. |
CacheIfAvailable | 3 | Выполняет запрос ресурса из кэша, если ресурс доступен, в противном случае отправляет запрос ресурса на сервер. Если запрошенный элемент доступен в каком-либо кэше между клиентом к сервером, запрос может быть выполнен промежуточным кэшем. |
CacheOnly | 2 | Выполняет запрос, используя ресурс из локального кэша, и не отправляет запрос элемента, которого нет в кэше. Если указан этот уровень политики кэша, в случае отсутствия элемента в клиентском кэше генерируется исключение WebException. |
CacheOrNextCacheOnly | 7 | Выполняет запрос ресурса из кэша локального компьютера или удаленного кэша локальной сети. Если не удается выполнить запрос, генерируется исключение WebException. В протоколе кэширования HTTP для этого используется директива управления кэшем |
Default | 0 | Выполняет запрос ресурса с помощью кэшированной копии ресурса или путем отправки запроса ресурса на сервер. Выполняемое действие определяется текущей политикой кэша и временем существования содержимого кэша. Это уровень кэша, который должен использоваться большинством приложений. |
NoCacheNoStore | 6 | Никогда не выполняет запрос, используя ресурсы из кэша, и не кэширует ресурсы. Если ресурс есть в локальном кэше, он удаляется. Этот уровень политики указывает, что ресурс должен быть удален из промежуточных кэшей. В протоколе кэширования HTTP для этого используется директива управления кэшем no-cache. |
Refresh | 8 | Выполняет запрос, используя сервер или кэш, отличный от локального. Перед использованием результата из промежуточного кэша в качестве ответа на запрос кэш должен повторно проверить кэшированную запись для этого результата, обратившись к серверу. В протоколе кэширования HTTP для этого используется директива управления кэшем max-age = 0 и заголовок |
Reload | 5 | Выполняет запрос, используя сервер. Ответ может быть сохранен в кэше. В протоколе кэширования HTTP для этого используется директива управления кэшем no-cache и заголовок |
Revalidate | 4 | Сравнивает копию ресурса в кэше с копией на сервере. Если копия на сервере более свежая, эта копия возвращается в ответ на запрос и записывается в кэш. Если копия в кэше аналогична копии на сервере, возвращается копия из кэша. В протоколе кэширования HTTP для этого используется условный запрос. |
Примеры
В следующем примере кода для политики кэширования домена приложения устанавливается значение По умолчанию.
// The following method demonstrates overriding the
// caching policy for a request.
static WebResponse^ GetResponseNoCache( Uri^ uri )
{
// Set a default policy level for the "http:" and "https" schemes.
HttpRequestCachePolicy^ policy = gcnew HttpRequestCachePolicy( HttpRequestCacheLevel::Default );
HttpWebRequest::DefaultCachePolicy = policy;
// Create the request.
WebRequest^ request = WebRequest::Create( uri );
// Define a cache policy for this request only.
HttpRequestCachePolicy^ noCachePolicy = gcnew HttpRequestCachePolicy( HttpRequestCacheLevel::NoCacheNoStore );
request->CachePolicy = noCachePolicy;
WebResponse^ response = request->GetResponse();
Console::WriteLine( L"IsFromCache? {0}", response->IsFromCache );
return response;
}
// The following method demonstrates overriding the
// caching policy for a request.
public static WebResponse GetResponseNoCache(Uri uri)
{
// Set a default policy level for the "http:" and "https" schemes.
HttpRequestCachePolicy policy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
HttpWebRequest.DefaultCachePolicy = policy;
// Create the request.
WebRequest request = WebRequest.Create(uri);
// Define a cache policy for this request only.
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
WebResponse response = request.GetResponse();
Console.WriteLine("IsFromCache? {0}", response.IsFromCache);
return response;
}
Комментарии
Это перечисление используется для задания уровня кэша, заданного объектами HttpRequestCachePolicy .
Это BypassCache
значение является поведением кэша по умолчанию, указанным в файле конфигурации компьютера, поставляемом с платформа .NET Framework. Записи не берутся из кэшей, не добавляются в кэши и не удаляются из кэшей между клиентом и сервером.
Свойство HttpWebRequest.DefaultCachePolicy используется для получения или задания политики кэша по умолчанию для HttpWebRequest экземпляров. Свойство WebRequest.DefaultCachePolicy используется для получения или задания политики кэша по умолчанию для экземпляра WebRequest . Свойство CachePolicy используется для получения или задания политики кэша для определенного запроса.
Копия ресурса добавляется в кэш, только если поток ответа для ресурса извлекается и считывается в конец потока. Поэтому другой запрос к тому же ресурсу может использовать кэшированную копию в зависимости от уровня политики кэша по умолчанию для этого запроса.