RequestCacheLevel Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica el comportamiento de almacenamiento en caché para los recursos obtenidos mediante WebRequest y sus clases derivadas.
public enum class RequestCacheLevel
public enum RequestCacheLevel
type RequestCacheLevel =
Public Enum RequestCacheLevel
- Herencia
Campos
BypassCache | 1 | Atiende una solicitud utilizando el servidor. Ninguna entrada se obtiene de las memorias caché, ni se agrega o se quita de las memorias caché entre el cliente y servidor. Éste es el comportamiento predeterminado de la caché especificado en el archivo de configuración del equipo que se distribuye con .NET Framework. |
CacheIfAvailable | 3 | Atiende una solicitud de un recurso de la caché si el recurso está disponible; de lo contrario, envía una solicitud de un recurso al servidor. Si el elemento solicitado está disponible en cualquier caché entre el cliente y el servidor, la caché intermedia podría atender la solicitud. |
CacheOnly | 2 | Atiende una solicitud mediante el recurso almacenado en la memoria caché local; no envía una solicitud de un elemento que no se encuentre en la caché. Cuando se especifica este nivel de directiva de caché, se produce una excepción WebException si el elemento no está en la caché del cliente. |
Default | 0 | Atiende una solicitud de un recurso utilizando la copia almacenada en caché del recurso o enviando una solicitud del recurso al servidor. La directiva de caché actual y la antigüedad del contenido de la caché determinan la acción que se va a realizar. Éste es el nivel de caché que deben utilizar la mayoría de las aplicaciones. |
NoCacheNoStore | 6 | Nunca atiende una solicitud utilizando los recursos de la caché y no almacena los recursos en memoria caché. Si el recurso está presente en la caché local, se quita. Este nivel de directiva indica a las memorias caché intermedias que deben quitar el recurso. En el protocolo de almacenamiento en caché HTTP, esto se logra utilizando la directiva de control de caché |
Reload | 5 | Atiende una solicitud utilizando el servidor. La respuesta podría guardarse en la caché. En el protocolo de almacenamiento en caché HTTP, esto se logra utilizando la directiva de control de caché |
Revalidate | 4 | Atiende una solicitud utilizando la copia almacenada en caché del recurso si la marca de tiempo es igual que la marca de tiempo del recurso en el servidor; de lo contrario, el recurso se descarga del servidor, se presenta al llamador y se almacena en la caché. |
Ejemplos
En el ejemplo de código siguiente se crea una directiva que devuelve un recurso solo si está en la memoria caché.
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;
}
Comentarios
Los miembros de esta enumeración se usan para inicializar RequestCachePolicy objetos. La configuración actual de un RequestCachePolicy objeto está disponible en la HttpRequestCachePolicy.Level propiedad .
Este BypassCache valor es el comportamiento de caché predeterminado especificado en el archivo de configuración de la máquina que se incluye con .NET Framework. Ninguna entrada se obtiene de las memorias caché, ni se agrega o se quita de las memorias caché entre el cliente y servidor.
La HttpWebRequest.DefaultCachePolicy propiedad se usa para obtener o establecer la directiva de caché predeterminada para HttpWebRequest instancias. La WebRequest.CachePolicy propiedad se usa para obtener o establecer la directiva de caché predeterminada para una WebRequest instancia de . La WebRequest.CachePolicy propiedad se usa para obtener o establecer la directiva de caché para una solicitud específica.
Si el comportamiento de la memoria caché es CacheIfAvailable
o Revalidate
, solo se agrega una copia de un recurso solicitado a la memoria caché si se recupera y lee el flujo de respuesta del recurso al final de la secuencia. Con CacheIfAvailable
, las solicitudes posteriores del mismo recurso usarían una copia almacenada en caché. Con Revalidate
, las solicitudes posteriores del mismo recurso usarían una copia almacenada en caché si la marca de tiempo del recurso almacenado en caché es la misma que la marca de tiempo del recurso en el servidor.
Una copia de un recurso solo se agrega a la memoria caché si la secuencia de respuesta del recurso se recupera y lee al final de la secuencia. Por lo tanto, otra solicitud para el mismo recurso podría usar una copia almacenada en caché, en función del nivel de directiva de caché predeterminado para esta solicitud.