Share via


HttpResponseCache Classe

Definizione

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di 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
Ereditarietà
HttpResponseCache
Attributi
Implementazioni

Commenti

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda. Questa classe supporta java.net.HttpURLConnection e javax.net.ssl.HttpsURLConnection; non è disponibile alcuna cache fornita dalla piattaforma per DefaultHttpClient o AndroidHttpClient. L'installazione e le istanze sono thread safe.

<h3 Installazione di una cache< di risposta HTTP/h3>> Abilitare la memorizzazione nella cache di tutte le richieste HTTP dell'applicazione installando la cache all'avvio dell'applicazione. Ad esempio, questo codice installa una cache di 10 MiB nel android.content.Context#getCacheDir() application-specific cache directory file system}:

{@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();
                  }
              }}

Questa cache rimuove le voci in base alle esigenze per mantenere le dimensioni superiori a 10 MiB. Le dimensioni migliori della cache sono specifiche dell'applicazione e dipendono dalle dimensioni e dalla frequenza dei file scaricati. L'aumento del limite può migliorare la frequenza di hit, ma può anche essere sufficiente sprecare lo spazio del file system!

Per alcune applicazioni potrebbe essere preferibile creare la cache nella directory di archiviazione esterna. <forte>Non sono presenti controlli di accesso nella directory di archiviazione esterna, pertanto non deve essere usato per le cache che potrebbero contenere dati privati.</strong> Anche se spesso ha più spazio libero, l'archiviazione esterna è facoltativa e—anche se disponibile—può scomparire durante l'uso. Recuperare la directory della cache esterna usando android.content.Context#getExternalCacheDir(). Se questo metodo restituisce Null, l'applicazione deve tornare alla memorizzazione nella cache o nella memorizzazione nella cache nell'archiviazione non esterna. Se l'archiviazione esterna viene rimossa durante l'uso, la frequenza di hit rate della cache scenderà a zero e le letture della cache in corso avranno esito negativo.

Lo scaricamento della cache forza i dati nel file system. Ciò garantisce che tutte le risposte scritte nella cache siano leggibili al successivo avvio dell'attività.

<h3 Ottimizzazione cache/h3>> Per misurare l'efficacia della cache, questa classe tiene traccia di tre statistiche: <ul><li><strong<>#getRequestCount() Request Count:/strong> il numero di richieste HTTP rilasciate dopo la creazione di questa cache.< <li><forte/forte>>#getNetworkCount() Network Count:< il numero di quelle richieste che richiedono l'uso della rete. <li><forte/forte>>#getHitCount() Hit Count:< il numero di quelle richieste le cui risposte sono state servite dalla cache. </ul> A volte una richiesta genera un hit della cache condizionale. Se la cache contiene una copia non aggiornata della risposta, il client emetterà un oggetto condizionale GET. Il server invierà quindi la risposta aggiornata se è stata modificata o una risposta breve "non modificata" se la copia del client è ancora valida. Tali risposte aumentano sia il conteggio della rete che il numero di hit.

Il modo migliore per migliorare la frequenza di hit rate della cache è configurare il server Web per restituire risposte memorizzate nella cache. Anche se questo client rispetta tutte le intestazioni della cache HTTP/1.1 (RFC 2068), non memorizza nella cache le risposte parziali.

<h3>Forzare una risposta< di rete/h3> In alcune situazioni, ad esempio dopo che un utente fa clic su un pulsante "aggiorna", potrebbe essere necessario ignorare la cache e recuperare i dati direttamente dal server. Per forzare un aggiornamento completo, aggiungere la no-cache direttiva:

{@code
                    connection.addRequestProperty("Cache-Control", "no-cache");
            }

Se è necessario solo forzare la convalida di una risposta memorizzata nella cache dal server, usare invece l'efficienza più efficiente max-age=0 :

{@code
                    connection.addRequestProperty("Cache-Control", "max-age=0");
            }

<h3 Forza una risposta< cache/h3>> A volte si desidera visualizzare le risorse se sono disponibili immediatamente, ma non in caso contrario. Questa operazione può essere usata in modo che l'applicazione possa visualizzare un elemento durante l'attesa del download dei dati più recenti. Per limitare una richiesta alle risorse memorizzate nella cache locale, aggiungere la only-if-cached direttiva:

{@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
                }
            }

Questa tecnica funziona ancora meglio in situazioni in cui una risposta non aggiornata è migliore di nessuna risposta. Per consentire risposte memorizzate nella cache non aggiornate, usare la direttiva con la max-stale massima stalezza in secondi:

{@code
                    int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
                    connection.addRequestProperty("Cache-Control", "max-stale=" + maxStale);
            }

<h3 Uso delle versioni< precedenti/h3>> Questa classe è stata aggiunta in Android 4.0 (Ice Cream Sandwich). Usare reflection per abilitare la cache delle risposte senza influire sulle versioni precedenti:

{@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) {
                  }}

Documentazione Java per android.net.http.HttpResponseCache.

Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .

Proprietà

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
Handle

Handle all'istanza di Android sottostante.

(Ereditato da Object)
HitCount

Restituisce il numero di richieste HTTP la cui risposta è stata fornita dalla cache.

Installed

Restituisce l'oggetto attualmente installato HttpResponseCacheo null se non è installata alcuna cache o non è un HttpResponseCacheoggetto .

JniIdentityHashCode

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
JniPeerMembers

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

NetworkCount

Restituisce il numero di richieste HTTP necessarie alla rete per fornire una risposta o convalidare una risposta memorizzata nella cache in locale.

PeerReference

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
RequestCount

Restituisce il numero totale di richieste HTTP effettuate.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da ResponseCache)
ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

(Ereditato da ResponseCache)

Metodi

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Close()

Disinstalla la cache e rilascia tutte le risorse attive.

Delete()

Disinstalla la cache ed elimina tutto il contenuto archiviato.

Dispose()

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
Dispose(Boolean)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
Flush()

Forzare le operazioni memorizzate nel buffer nel file system.

Get(URI, String, IDictionary<String,IList<String>>)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
Install(File, Int64)

Crea una nuova cache delle risposte HTTP e la imposta come cache predefinita del sistema.

JavaFinalize()

Chiamato dal Garbage Collector in un oggetto quando Garbage Collection determina che non sono presenti più riferimenti all'oggetto.

(Ereditato da Object)
MaxSize()

Restituisce il numero massimo di byte che la cache deve usare per archiviare i dati.

Notify()

Riattiva un singolo thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitoraggio dell'oggetto.

(Ereditato da Object)
Put(URI, URLConnection)

Consente al gestore del protocollo di memorizzare nella cache i dati dopo il recupero delle risorse.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
Size()

Restituisce il numero di byte attualmente usati per archiviare i valori in questa cache.

ToArray<T>()

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione in formato stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
Wait()

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere eseguendo>una notifica</em o <em interrotto</>em>>.<

(Ereditato da Object)
Wait(Int64)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Causa l'attesa del thread corrente fino a quando non viene svegliata, in genere <>eseguendo una notifica</em o <em interrotto/>>em>o fino a quando non è trascorsa< una determinata quantità di tempo reale.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
IJavaPeerable.Finalized()

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione dei tipi controllati dal runtime Android.

JavaCast<TResult>(IJavaObject)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

GetJniTypeName(IJavaPeerable)

Memorizza nella cache le risposte HTTP e HTTPS al file system in modo che possano essere riutilizzate, risparmiando tempo e larghezza di banda.

Si applica a