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 as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura 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
- Herança
- Atributos
- Implementações
Comentários
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. Essa classe suporta java.net.HttpURLConnection
e javax.net.ssl.HttpsURLConnection
; não há cache fornecido pela plataforma para DefaultHttpClient
ou AndroidHttpClient
. A instalação e as instâncias são thread safe.
<h3>Instalando um cache< de resposta HTTP/h3 Habilite> 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 acertos, 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. <strong>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 muitas vezes tenha mais espaço livre, o armazenamento externo é opcional e— mesmo que disponível— pode desaparecer durante o uso. Recupere o diretório de cache externo usando android.content.Context#getExternalCacheDir()
o . Se esse método retornar null, seu aplicativo deverá retornar para não armazenar em cache ou em cache em armazenamento não externo. Se o armazenamento externo for removido durante o uso, a taxa de acertos do cache cairá para zero e as leituras contínuas do cache falharão.
A liberação do cache força seus dados para o sistema de arquivos. Isso garante que todas as respostas gravadas no cache serão legíveis na próxima vez que a atividade for iniciada.
<h3>Otimização de cache</h3> Para medir a eficácia do cache, essa classe rastreia três estatísticas: <ul><li><strong#getRequestCount() Request Count:
></strong> o número de solicitações HTTP emitidas desde que esse cache foi criado. <li><forte>#getNetworkCount() Network Count:
</forte> o número de solicitações que exigiam o uso da rede. <li><strong>#getHitCount() Hit Count:
</strong> o número de solicitações cujas respostas foram atendidas pelo cache. </ul> Às vezes, uma solicitação resultará em um acerto de cache condicional. Se o cache contiver uma cópia obsoleta da resposta, o cliente emitirá um GET
arquivo . 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 acertos.
A melhor maneira de melhorar a taxa de acertos do cache é configurando o servidor Web para retornar respostas em cache. Embora esse cliente honre 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 clica em um botão 'atualizar', pode ser 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 em cache a ser validada pelo servidor, use a opção mais eficiente max-age=0
:
{@code
connection.addRequestProperty("Cache-Control", "max-age=0");
}
<h3>Forçar uma resposta< de cache/h3> Às vezes, você vai querer mostrar recursos se eles estão disponíveis imediatamente, mas não de outra forma. Isso pode ser usado para que seu aplicativo possa mostrar algo enquanto aguarda o download dos dados mais recentes. 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
}
}
Esta técnica funciona ainda melhor em situações em que uma resposta obsoleta é melhor do que nenhuma resposta. Para permitir respostas obsoletas em cache, use a max-stale
diretiva com o máximo de desligamento 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 no Android 4.0 (Ice Cream Sandwich). Use o reflexo para habilitar o cache de resposta sem afetar as 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) {
}}
Documentação Java para android.net.http.HttpResponseCache
.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
Propriedades
Class |
Retorna a classe de tempo de execução 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 |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
JniPeerMembers |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. |
NetworkCount |
Retorna o número de solicitações HTTP que exigiram que a rede fornecesse uma resposta ou validasse uma resposta armazenada em cache localmente. |
PeerReference |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
RequestCount |
Retorna o número total de solicitações HTTP que foram feitas. |
ThresholdClass |
Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de ResponseCache) |
ThresholdType |
Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. (Herdado de ResponseCache) |
Métodos
Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
Close() |
Desinstala o cache e libera todos os recursos ativos. |
Delete() |
Desinstala o cache e exclui todo o conteúdo armazenado. |
Dispose() |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
Dispose(Boolean) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
Equals(Object) |
Indica se algum outro objeto é "igual" a este. (Herdado de Object) |
Flush() |
Forçar operações em buffer para o sistema de arquivos. |
Get(URI, String, IDictionary<String,IList<String>>) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, 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 após recuperar recursos. |
SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle. (Herdado de Object) |
Size() |
Retorna o número de bytes que estão sendo usados atualmente para armazenar os valores nesse cache. |
ToArray<T>() |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
UnregisterFromRuntime() |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
Wait() |
Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em 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 sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido. (Herdado de Object) |
Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
IJavaPeerable.Disposed() |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
IJavaPeerable.Finalized() |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
IJavaPeerable.JniManagedPeerState |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. (Herdado de Object) |
Métodos de Extensão
JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo verificada em tempo de execução do Android. |
JavaCast<TResult>(IJavaObject) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. |
GetJniTypeName(IJavaPeerable) |
Armazena em cache as respostas HTTP e HTTPS no sistema de arquivos para que possam ser reutilizadas, economizando tempo e largura de banda. |