HttpResponseCache クラス

定義

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

[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
継承
HttpResponseCache
属性
実装

注釈

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。 このクラスは と javax.net.ssl.HttpsURLConnectionjava.net.HttpURLConnectionサポートしています。または AndroidHttpClientのプラットフォーム指定キャッシュDefaultHttpClientはありません。 インストールとインスタンスはスレッド セーフです。

<h3>HTTP 応答キャッシュ<のインストール/h3> アプリケーションの起動時にキャッシュをインストールして、アプリケーションのすべての HTTP 要求のキャッシュを有効にします。 たとえば、次のコードでは、ファイルシステムの に android.content.Context#getCacheDir() application-specific cache directory 10 MiB キャッシュをインストールします}。

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

このキャッシュは、サイズが 10 MiB を超えないように、必要に応じてエントリを削除します。 最適なキャッシュ サイズはアプリケーション固有であり、ダウンロードするファイルのサイズと頻度によって異なります。 制限を増やすとヒット率が向上する可能性がありますが、ファイルシステムの領域が無駄になる可能性もあります。

一部のアプリケーションでは、外部ストレージ ディレクトリにキャッシュを作成することをお勧めします。 <strong>外部ストレージ ディレクトリにはアクセス制御がないため、プライベート データを含むことができるキャッシュには使用しないでください。</strong> 多くの場合、空き領域は多くなりますが、外部ストレージは省略可能であり、使用可能な—が使用中に消える可能性がある場合でも—。 を使用して外部キャッシュ ディレクトリを android.content.Context#getExternalCacheDir()取得します。 このメソッドが null を返す場合、アプリケーションは非外部ストレージでのキャッシュまたはキャッシュにフォールバックする必要があります。 使用中に外部ストレージが削除されると、キャッシュヒット率はゼロに低下し、進行中のキャッシュ読み取りは失敗します。

キャッシュをフラッシュすると、データが強制的にファイルシステムに送信されます。 これにより、キャッシュに書き込まれたすべての応答が、次にアクティビティが開始された時点で読み取り可能になります。

<h3>Cache Optimization</h3> キャッシュの有効性を測定するために、このクラスは 3 つの統計を<追跡します。ul><li><strong#getRequestCount() Request Count:></strong> は、このキャッシュが作成されてから発行された HTTP 要求の数です。 <li><ネットワークを使用する必要がある要求の数を強<>#getNetworkCount() Network Count:くまたは強く>します。 <li><キャッシュによって応答が提供された要求の数を厳密<>#getHitCount() Hit Count:または強く>します。 </ul> 要求によって条件付きキャッシュ ヒットが発生することがあります。 キャッシュに応答の古いコピーが含まれている場合、クライアントは条件付き GETを発行します。 その後、サーバーは更新された応答を変更した場合は送信し、クライアントのコピーがまだ有効な場合は短い "変更されていない" 応答を送信します。 このような応答は、ネットワーク数とヒット数の両方をインクリメントします。

キャッシュ ヒット 率を向上させる最善の方法は、キャッシュ可能な応答を返すように Web サーバーを構成することです。 このクライアントは、すべての HTTP/1.1 (RFC 2068) キャッシュ ヘッダーを優先しますが、部分的な応答はキャッシュしません。

<h3>ネットワーク応答<の強制/h3> ユーザーが [更新] ボタンをクリックした後など、一部の状況では、キャッシュをスキップし、サーバーから直接データをフェッチすることが必要になる場合があります。 完全更新を強制するには、 ディレクティブを追加します no-cache

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

キャッシュされた応答をサーバーによって強制的に検証する必要がある場合は、代わりに より効率的な max-age=0 を使用します。

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

<h3>キャッシュ応答<を強制/h3> リソースがすぐに利用可能な場合は表示したいが、それ以外の場合は表示しない場合がある。 これを使用すると、最新のデータがダウンロードされるのを待っている間にアプリケーションで 何かを 表示できます。 要求をローカルにキャッシュされたリソースに制限するには、 ディレクティブを追加します only-if-cached

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

この手法は、応答がないよりも古い応答の方が優れている場合にさらに優れています。 古いキャッシュされた応答を許可するには、 ディレクティブを使用し max-stale 、最大整合性を秒単位で指定します。

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

<h3>以前のリリース<での作業/h3> このクラスは、Android 4.0 (アイスクリーム サンドイッチ) で追加されました。 リフレクションを使用して、以前のリリースに影響を与えずに応答キャッシュを有効にします。

{@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 ドキュメント android.net.http.HttpResponseCache

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
HitCount

キャッシュによって応答が提供された HTTP 要求の数を返します。

Installed

現在インストールされている HttpResponseCacheを返します。キャッシュがインストールされていないか、 ではない HttpResponseCache場合は null を返します。

JniIdentityHashCode

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
JniPeerMembers

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

NetworkCount

ネットワークが応答を提供するか、ローカルにキャッシュされた応答を検証する必要がある HTTP 要求の数を返します。

PeerReference

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
RequestCount

行われた HTTP 要求の合計数を返します。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

(継承元 ResponseCache)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

(継承元 ResponseCache)

メソッド

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Close()

キャッシュをアンインストールし、アクティブなリソースを解放します。

Delete()

キャッシュをアンインストールし、格納されているすべての内容を削除します。

Dispose()

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
Dispose(Boolean)

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
Flush()

バッファー処理された操作を強制的にファイル システムに送信します。

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

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
Install(File, Int64)

新しい HTTP 応答キャッシュを作成し、システムの既定のキャッシュとして設定します。

JavaFinalize()

ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
MaxSize()

このキャッシュがデータの格納に使用する最大バイト数を返します。

Notify()

このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。

(継承元 Object)
Put(URI, URLConnection)

リソースの取得後にプロトコル ハンドラーがデータをキャッシュできるようにします。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
Size()

このキャッシュに値を格納するために現在使用されているバイト数を返します。

ToArray<T>()

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

IJavaPeerable.Disposed()

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
IJavaPeerable.Finalized()

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

GetJniTypeName(IJavaPeerable)

HTTP 応答と HTTPS 応答をファイルシステムにキャッシュして再利用し、時間と帯域幅を節約します。

適用対象