HttpResponseCache Clase
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í.
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda.
[Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)]
public sealed class HttpResponseCache : Java.Net.ResponseCache, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable
[<Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)>]
type HttpResponseCache = class
inherit ResponseCache
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Herencia
- Atributos
- Implementaciones
Comentarios
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. Esta clase admite java.net.HttpURLConnection
y javax.net.ssl.HttpsURLConnection
; no hay ninguna memoria caché proporcionada por la plataforma para DefaultHttpClient
o AndroidHttpClient
. La instalación y las instancias son seguras para subprocesos.
<h3>Instalar una caché< de respuesta HTTP/h3> Habilitar el almacenamiento en caché de todas las solicitudes HTTP de la aplicación mediante la instalación de la memoria caché en el inicio de la aplicación. Por ejemplo, este código instala una caché de 10 MiB en el android.content.Context#getCacheDir() application-specific cache directory
del sistema de archivos}:
{@code
protected void onCreate(Bundle savedInstanceState) {
...
try {
File httpCacheDir = new File(context.getCacheDir(), "http");
long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
HttpResponseCache.install(httpCacheDir, httpCacheSize);
} catch (IOException e) {
Log.i(TAG, "HTTP response cache installation failed:" + e);
}
}
protected void onStop() {
...
HttpResponseCache cache = HttpResponseCache.getInstalled();
if (cache != null) {
cache.flush();
}
}}
Esta caché expulsará las entradas según sea necesario para evitar que su tamaño supere los 10 MiB. El mejor tamaño de caché es específico de la aplicación y depende del tamaño y la frecuencia de los archivos que se descargan. Aumentar el límite puede mejorar la tasa de aciertos, pero también puede desperdiciar espacio del sistema de archivos.
Para algunas aplicaciones, puede ser preferible crear la memoria caché en el directorio de almacenamiento externo. <strong>No hay controles de acceso en el directorio de almacenamiento externo, por lo que no se debe usar para las memorias caché que podrían contener datos privados.</strong> Aunque a menudo tiene más espacio libre, el almacenamiento externo es opcional y— incluso si está disponible&8212; puede desaparecer durante el uso. Recupere el directorio de caché externa mediante android.content.Context#getExternalCacheDir()
. Si este método devuelve null, la aplicación debe revertir al almacenamiento en caché o al almacenamiento en caché en un almacenamiento no externo. Si se quita el almacenamiento externo durante el uso, la tasa de aciertos de caché se quitará a cero y se producirá un error en las lecturas de caché en curso.
Vaciar la memoria caché fuerza sus datos al sistema de archivos. Esto garantiza que todas las respuestas escritas en la memoria caché se puedan leer la próxima vez que se inicie la actividad.
<h3>Cache Optimization</h3> Para medir la eficacia de la caché, esta clase realiza un seguimiento de tres estadísticas: <ul><li><strong#getRequestCount() Request Count:
></strong> el número de solicitudes HTTP emitidas desde que se creó esta memoria caché. <li><strong>#getNetworkCount() Network Count:
</strong> el número de solicitudes que requieren el uso de red. <li><strong>#getHitCount() Hit Count:
</strong> el número de solicitudes cuyas respuestas fueron atendidas por la memoria caché. </ul> A veces, una solicitud dará lugar a un acierto de caché condicional. Si la memoria caché contiene una copia obsoleta de la respuesta, el cliente emitirá un condicional GET
. A continuación, el servidor enviará la respuesta actualizada si ha cambiado o una respuesta breve "no modificada" si la copia del cliente sigue siendo válida. Estas respuestas incrementan tanto el número de redes como el número de llamadas.
La mejor manera de mejorar la tasa de aciertos de caché es configurar el servidor web para devolver respuestas que se pueden almacenar en caché. Aunque este cliente respeta todos los encabezados de caché HTTP/1.1 (RFC 2068), no almacena en caché las respuestas parciales.
<h3>Forzar una respuesta< de red/h3> En algunas situaciones, como después de que un usuario haga clic en un botón "actualizar", puede ser necesario omitir la memoria caché y capturar datos directamente desde el servidor. Para forzar una actualización completa, agregue la no-cache
directiva :
{@code
connection.addRequestProperty("Cache-Control", "no-cache");
}
Si solo es necesario forzar que el servidor valide una respuesta almacenada en caché, use el más eficaz max-age=0
en su lugar:
{@code
connection.addRequestProperty("Cache-Control", "max-age=0");
}
<h3>Forzar una respuesta de< caché/h3> A veces querrá mostrar los recursos si están disponibles inmediatamente, pero no de lo contrario. Esto se puede usar para que la aplicación pueda mostrar algo mientras espera a que se descarguen los datos más recientes. Para restringir una solicitud a recursos almacenados en caché local, agregue la only-if-cached
directiva :
{@code
try {
connection.addRequestProperty("Cache-Control", "only-if-cached");
InputStream cached = connection.getInputStream();
// the resource was cached! show it
} catch (FileNotFoundException e) {
// the resource was not cached
}
}
Esta técnica funciona aún mejor en situaciones en las que una respuesta obsoleta es mejor que ninguna respuesta. Para permitir respuestas almacenadas en caché obsoletas, use la max-stale
directiva con la obsolescencia máxima en segundos:
{@code
int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
connection.addRequestProperty("Cache-Control", "max-stale=" + maxStale);
}
<h3>Working With Earlier Releases</h3> Esta clase se agregó en Android 4.0 (Ice Cream Sandwich). Use la reflexión para habilitar la caché de respuestas sin afectar a las versiones anteriores:
{@code
try {
File httpCacheDir = new File(context.getCacheDir(), "http");
long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
Class.forName("android.net.http.HttpResponseCache")
.getMethod("install", File.class, long.class)
.invoke(null, httpCacheDir, httpCacheSize);
} catch (Exception httpResponseCacheNotAvailable) {
}}
Documentación de Java para android.net.http.HttpResponseCache
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Propiedades
Class |
Devuelve la clase en tiempo de ejecución de este |
Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
HitCount |
Devuelve el número de solicitudes HTTP cuya respuesta proporcionó la memoria caché. |
Installed |
Devuelve el objeto instalado |
JniIdentityHashCode |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
JniPeerMembers |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. |
NetworkCount |
Devuelve el número de solicitudes HTTP que requerían la red para proporcionar una respuesta o validar una respuesta almacenada en caché localmente. |
PeerReference |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
RequestCount |
Devuelve el número total de solicitudes HTTP realizadas. |
ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de ResponseCache) |
ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. (Heredado de ResponseCache) |
Métodos
Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
Close() |
Desinstala la memoria caché y libera los recursos activos. |
Delete() |
Desinstala la memoria caché y elimina todo su contenido almacenado. |
Dispose() |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
Dispose(Boolean) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
Flush() |
Forzar operaciones almacenadas en búfer en el sistema de archivos. |
Get(URI, String, IDictionary<String,IList<String>>) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. |
GetHashCode() |
Devuelve un valor de código hash del objeto. (Heredado de Object) |
Install(File, Int64) |
Crea una nueva caché de respuesta HTTP y la establece como caché predeterminada del sistema. |
JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
MaxSize() |
Devuelve el número máximo de bytes que debe usar esta memoria caché para almacenar sus datos. |
Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
Put(URI, URLConnection) |
Permite al controlador de protocolo almacenar en caché los datos después de recuperar recursos. |
SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
Size() |
Devuelve el número de bytes que se usan actualmente para almacenar los valores en esta memoria caché. |
ToArray<T>() |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
UnregisterFromRuntime() |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
Wait() |
Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em> o <em>interrumpido</em>.<>< (Heredado de Object) |
Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
IJavaPeerable.Disposed() |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
IJavaPeerable.Finalized() |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
IJavaPeerable.JniManagedPeerState |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. (Heredado de Object) |
Métodos de extensión
JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
JavaCast<TResult>(IJavaObject) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. |
GetJniTypeName(IJavaPeerable) |
Almacena en caché las respuestas HTTP y HTTPS al sistema de archivos para que se puedan reutilizar, lo que ahorra tiempo y ancho de banda. |