HttpResponseCache Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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 |
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é |
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, 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) |
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) |
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. |