HttpResponseCache Classe

Definição

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 Object.

(Herdado de Object)
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 HttpResponseCacheou nulo se não houver nenhum cache instalado ou se não for um HttpResponseCache.

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 self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

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 selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a