HttpResponseCache クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ファイルシステムへの 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
- 継承
- 属性
- 実装
注釈
ファイルシステムへの HTTP 応答と HTTPS 応答をキャッシュして再利用できるため、時間と帯域幅が節約されます。 このクラスは、プラットフォームによって提供されるキャッシュをサポートjava.net.HttpURLConnection
します。またAndroidHttpClient
、プラットフォームが提供するDefaultHttpClient
キャッシュjavax.net.ssl.HttpsURLConnection
もありません。 インストールとインスタンスはスレッド セーフです。
<h3>HTTP 応答キャッシュ<のインストール/h3> アプリケーションの起動時にキャッシュをインストールして、アプリケーションのすべての HTTP 要求のキャッシュを有効にします。 たとえば、次のコードは、ファイルシステムの中に 10 MiB キャッシュを android.content.Context#getCacheDir() application-specific cache directory
インストールします}。
{@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> 多くの場合、空き領域は多くなりますが、外部ストレージは省略可能であり、#8212 です。使用可能な場合でも>#8212;は使用中に消える可能性があります。 を使用して外部キャッシュ ディレクトリを 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
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
HitCount |
キャッシュによって応答が提供された HTTP 要求の数を返します。 |
Installed |
現在インストールされている |
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, Int32) |
現在のスレッドが目覚めるまで待機します。通常<><は、通知/em> または <em>中断</em> によって、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64) |
現在のスレッドが目覚めるまで待機します。通常<><は、通知/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 応答をキャッシュして再利用できるため、時間と帯域幅が節約されます。 |