Partager via


HttpResponseCache Classe

Définition

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

[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
Héritage
HttpResponseCache
Attributs
Implémente

Remarques

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante. Cette classe prend en charge java.net.HttpURLConnection et javax.net.ssl.HttpsURLConnection; il n’existe aucun cache fourni par la plateforme pour DefaultHttpClient ou AndroidHttpClient. L’installation et les instances sont thread-safe.

<h3>Installation d’un cache< de réponse HTTP/h3> Activer la mise en cache de toutes les requêtes HTTP de votre application en installant le cache au démarrage de l’application. Par exemple, ce code installe un cache de 10 Mio dans le android.content.Context#getCacheDir() application-specific cache directory système de fichiers} :

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

Ce cache supprime les entrées si nécessaire pour empêcher sa taille de dépasser 10 Mio. La meilleure taille de cache est spécifique à l’application et dépend de la taille et de la fréquence des fichiers téléchargés. L’augmentation de la limite peut améliorer le taux d’accès, mais elle peut également gaspiller l’espace du système de fichiers !

Pour certaines applications, il peut être préférable de créer le cache dans le répertoire de stockage externe. <forte>Il n’existe aucun contrôle d’accès sur le répertoire de stockage externe afin qu’il ne soit pas utilisé pour les caches pouvant contenir des données privées.</strong> Bien qu’il ait souvent plus d’espace libre, le stockage externe est facultatif et— ; même si disponible— ; peut disparaître pendant l’utilisation. Récupérez le répertoire du cache externe à l’aide android.content.Context#getExternalCacheDir()de . Si cette méthode retourne null, votre application doit revenir à la mise en cache ou à la mise en cache sur le stockage non externe. Si le stockage externe est supprimé pendant l’utilisation, le taux d’accès au cache tombe à zéro et les lectures de cache en cours échouent.

Le vidage du cache force ses données au système de fichiers. Cela garantit que toutes les réponses écrites dans le cache seront lisibles la prochaine fois que l’activité démarre.

<h3>Optimisation< du cache/h3> Pour mesurer l’efficacité du cache, cette classe suit trois statistiques : <ul<>li><strong/strong<>#getRequestCount() Request Count:> the number of HTTP requests issued since this cache was created. <li><strong>#getNetworkCount() Network Count:</strong> the number of those requests that required network use. <li><strong/strong>>#getHitCount() Hit Count:< le nombre de demandes dont les réponses ont été traitées par le cache. </ul> Parfois, une requête entraîne un accès conditionnel au cache. Si le cache contient une copie obsolète de la réponse, le client émet un message conditionnel GET. Le serveur envoie ensuite la réponse mise à jour si elle a changé, ou une réponse courte « non modifiée » si la copie du client est toujours valide. Ces réponses incrémentent le nombre de réseaux et le nombre d’accès.

La meilleure façon d’améliorer le taux d’accès au cache consiste à configurer le serveur web pour retourner des réponses mises en cache. Bien que ce client respecte tous les en-têtes de cache HTTP/1.1 (RFC 2068), il ne met pas en cache les réponses partielles.

<h3>Forcer une réponse< réseau/h3> Dans certaines situations, par exemple après qu’un utilisateur clique sur un bouton « Actualiser », il peut être nécessaire d’ignorer le cache et d’extraire des données directement à partir du serveur. Pour forcer une actualisation complète, ajoutez la no-cache directive :

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

S’il n’est nécessaire de forcer la validation d’une réponse mise en cache que par le serveur, utilisez plutôt l’efficacité la plus efficace max-age=0 :

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

<h3>Forcez une réponse< de cache/h3> Parfois, vous souhaiterez afficher les ressources si elles sont disponibles immédiatement, mais pas autrement. Cela peut être utilisé afin que votre application puisse afficher quelque chose en attendant que les données les plus récentes soient téléchargées. Pour restreindre une requête aux ressources mises en cache localement, ajoutez la only-if-cached directive :

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

Cette technique fonctionne encore mieux dans les situations où une réponse obsolète est meilleure qu’aucune réponse. Pour autoriser les réponses mises en cache obsolètes, utilisez la max-stale directive avec l’obsolescence maximale en secondes :

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

<h3>Working With Earlier Releases</h3> Cette classe a été ajoutée dans Android 4.0 (Ice Cream Sandwich). Utilisez la réflexion pour activer le cache de réponse sans impacter les versions antérieures :

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

Documentation Java pour android.net.http.HttpResponseCache.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Propriétés

Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
HitCount

Retourne le nombre de requêtes HTTP dont la réponse a été fournie par le cache.

Installed

Retourne le fichier actuellement installé HttpResponseCacheou null s’il n’y a pas de cache installé ou qu’il n’est pas un HttpResponseCache.

JniIdentityHashCode

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
JniPeerMembers

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

NetworkCount

Retourne le nombre de requêtes HTTP qui ont requis le réseau pour fournir une réponse ou valider une réponse mise en cache localement.

PeerReference

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
RequestCount

Retourne le nombre total de requêtes HTTP effectuées.

ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

(Hérité de ResponseCache)
ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

(Hérité de ResponseCache)

Méthodes

Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Close()

Désinstalle le cache et libère toutes les ressources actives.

Delete()

Désinstalle le cache et supprime tout son contenu stocké.

Dispose()

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
Dispose(Boolean)

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
Flush()

Forcez les opérations mises en mémoire tampon dans le système de fichiers.

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

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

GetHashCode()

Retourne une valeur de code de hachage pour l'objet.

(Hérité de Object)
Install(File, Int64)

Crée un nouveau cache de réponse HTTP et le définit comme cache par défaut du système.

JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
MaxSize()

Retourne le nombre maximal d’octets que ce cache doit utiliser pour stocker ses données.

Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
Put(URI, URLConnection)

Permet au gestionnaire de protocole de mettre en cache les données après avoir récupéré des ressources.

SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
Size()

Retourne le nombre d’octets actuellement utilisés pour stocker les valeurs dans ce cache.

ToArray<T>()

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
ToString()

Retourne une représentation de chaîne de l'objet.

(Hérité de Object)
UnregisterFromRuntime()

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

IJavaPeerable.Disposed()

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
IJavaPeerable.DisposeUnlessReferenced()

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
IJavaPeerable.Finalized()

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
IJavaPeerable.JniManagedPeerState

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

(Hérité de Object)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

GetJniTypeName(IJavaPeerable)

Met en cache les réponses HTTP et HTTPS au système de fichiers afin qu’elles puissent être réutilisées, ce qui permet d’économiser du temps et de la bande passante.

S’applique à