HttpResponseCache Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda.
[Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)]
public sealed class HttpResponseCache : Java.Net.ResponseCache, IDisposable, 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
- Herança
- Atributos
- Implementações
Comentários
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. Essa classe dá java.net.HttpURLConnection suporte e javax.net.ssl.HttpsURLConnection; não há nenhum cache fornecido pela plataforma para DefaultHttpClient ou AndroidHttpClient. A instalação e as instâncias são thread-safe.
<h3>Instalar um cache< de resposta HTTP/h3> Habilitar o cache de todas as solicitações HTTP do aplicativo instalando o cache na inicialização do aplicativo. Por exemplo, esse código instala um cache de 10 MiB no android.content.Context#getCacheDir() application-specific cache directory sistema de arquivos}:
{@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();
}
}}
Esse cache removerá as entradas conforme necessário para evitar que seu tamanho exceda 10 MiB. O melhor tamanho de cache é específico do aplicativo e depende do tamanho e da frequência dos arquivos que estão sendo baixados. Aumentar o limite pode melhorar a taxa de ocorrências, mas também pode apenas desperdiçar espaço no sistema de arquivos!
Para alguns aplicativos, pode ser preferível criar o cache no diretório de armazenamento externo.
<forte>Não há controles de acesso no diretório de armazenamento externo, portanto, ele não deve ser usado para caches que possam conter dados privados.</strong> Embora geralmente tenha mais espaço livre, o armazenamento externo é opcional e— mesmo se disponível>nº 8212; pode desaparecer durante o uso. Recuperar o diretório de cache externo usando android.content.Context#getExternalCacheDir(). Se esse método retornar nulo, seu aplicativo deverá recuar para não armazenar em cache ou armazenar em cache no armazenamento não externo. Se o armazenamento externo for removido durante o uso, a taxa de ocorrência do cache cairá para zero e as leituras de cache contínuas falharão.
A liberação do cache força seus dados ao sistema de arquivos. Isso garante que todas as respostas gravadas no cache sejam legíveis na próxima vez que a atividade for iniciada.
<Otimização de cache h3>/h3< Para medir a eficácia do cache, essa classe rastreia três estatísticas: >ul<>li<forte><>#getRequestCount() Request Count:/forte< o número de solicitações HTTP emitidas desde que esse cache foi criado.>
<li><forte>#getNetworkCount() Network Count:</forte> o número dessas solicitações que exigiram o uso da rede.
<li><forte>#getHitCount() Hit Count:</forte> o número dessas solicitações cujas respostas foram atendidas pelo cache.
</ul> Às vezes, uma solicitação resultará em uma ocorrência de cache condicional. Se o cache contiver uma cópia obsoleta da resposta, o cliente emitirá um condicional GET. Em seguida, o servidor enviará a resposta atualizada se tiver sido alterada ou uma resposta curta "não modificada" se a cópia do cliente ainda for válida. Essas respostas incrementam a contagem de rede e a contagem de ocorrências.
A melhor maneira de melhorar a taxa de ocorrências de cache é configurando o servidor Web para retornar respostas em cache. Embora esse cliente atente a todos os cabeçalhos de cache HTTP/1.1 (RFC 2068), ele não armazena em cache respostas parciais.
<h3>Forçar uma Resposta< de Rede/h3> Em algumas situações, como depois que um usuário clicar em um botão "atualizar", talvez seja necessário ignorar o cache e buscar dados diretamente do servidor. Para forçar uma atualização completa, adicione a no-cache diretiva:
{@code
connection.addRequestProperty("Cache-Control", "no-cache");
}
Se for necessário apenas forçar uma resposta armazenada em cache a ser validada pelo servidor, use o mais eficiente max-age=0 em vez disso:
{@code
connection.addRequestProperty("Cache-Control", "max-age=0");
}
<h3>Forçar uma resposta< de cache/h3> Às vezes, você desejará mostrar recursos se eles estiverem disponíveis imediatamente, mas não de outra forma. Isso pode ser usado para que seu aplicativo possa mostrar algo enquanto aguarda os dados mais recentes serem baixados. Para restringir uma solicitação a recursos armazenados em cache localmente, adicione a only-if-cached diretiva:
{@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
}
}
Essa técnica funciona ainda melhor em situações em que uma resposta obsoleta é melhor do que nenhuma resposta. Para permitir respostas obsoletas armazenadas em cache, use a max-stale diretiva com o máximo de desatualização em segundos:
{@code
int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
connection.addRequestProperty("Cache-Control", "max-stale=" + maxStale);
}
<h3>Trabalhando com versões anteriores</h3> Esta classe foi adicionada ao Android 4.0 (Ice Cream Sandwich). Use a reflexão para habilitar o cache de resposta sem afetar versões 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) {
}}
Java documentação para android.net.http.HttpResponseCache.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Propriedades
| Nome | Description |
|---|---|
| Class |
Retorna a classe de runtime deste |
| Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
| HitCount |
Retorna o número de solicitações HTTP cuja resposta foi fornecida pelo cache. |
| Installed |
Retorna o atualmente instalado |
| JniIdentityHashCode |
Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade. (Herdado de Object) |
| JniManagedPeerState |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| JniPeerMembers |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. |
| NetworkCount |
Retorna o número de solicitações HTTP que exigiam que a rede fornecesse uma resposta ou validasse uma resposta armazenada em cache localmente. |
| PeerReference |
Obtém a referência de objeto JNI para este par Java. (Herdado de Object) |
| RequestCount |
Retorna o número total de solicitações HTTP que foram feitas. |
| ThresholdClass |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de ResponseCache) |
| ThresholdType |
Essa API dá suporte à infraestrutura do Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de ResponseCache) |
Métodos
| Nome | Description |
|---|---|
| Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
| Close() |
Desinstala o cache e libera todos os recursos ativos. |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| Delete() |
Desinstala o cache e exclui todo o conteúdo armazenado. |
| Dispose() |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| Dispose(Boolean) |
Libera os recursos mantidos por esse par Java. (Herdado de Object) |
| DisposeUnlessReferenced() |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| Equals(Object) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| Equals(Object) |
Indica se algum outro objeto é "igual a" este. (Herdado de Object) |
| Flush() |
Force as operações em buffer para o sistema de arquivos. |
| Get(URI, String, IDictionary<String,IList<String>>) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. |
| GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
| Install(File, Int64) |
Cria um novo cache de resposta HTTP e o define como o cache padrão do sistema. |
| JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
| MaxSize() |
Retorna o número máximo de bytes que esse cache deve usar para armazenar seus dados. |
| Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
| NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
| Put(URI, URLConnection) |
Permite que o manipulador de protocolo armazene dados em cache depois de recuperar recursos. |
| SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle (Herdado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| Size() |
Retorna o número de bytes atualmente sendo usados para armazenar os valores nesse cache. |
| ToArray<T>() |
Cria uma matriz gerenciada com base nesse wrapper de matriz Java. (Herdado de Object) |
| ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
| UnregisterFromRuntime() |
Cancela o registro desse par Java do runtime de interoperabilidade. (Herdado de Object) |
| Wait() |
Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<> (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IJavaPeerable.Disposed() |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| IJavaPeerable.Finalized() |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. (Herdado de JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. |
Métodos de Extensão
| Nome | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtém o nome JNI do tipo da instância |
| JavaAs<TResult>(IJavaPeerable) |
Tente coagir a digitar |
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo marcada por runtime do Android. |
| JavaCast<TResult>(IJavaObject) |
Armazena em cache respostas HTTP e HTTPS ao sistema de arquivos para que possam ser reutilizados, economizando tempo e largura de banda. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Tente coagir a digitar |