英語で読む

次の方法で共有


HttpRequestCacheLevel 列挙型

定義

ハイパーテキスト転送プロトコル (HTTP: Hypertext Transfer protocol) を使用して取得されるリソースのキャッシュ動作を指定します。

C#
public enum HttpRequestCacheLevel
継承
HttpRequestCacheLevel

フィールド

名前 説明
BypassCache 1

サーバーを使用して要求に応じます。 クライアントとサーバー間では、エントリはキャッシュから取得したり、キャッシュに追加、またはキャッシュから削除したりされません。 クライアントとサーバー間では、エントリはキャッシュから取得したり、キャッシュに追加、またはキャッシュから削除したりされません。 これは、.NET Framework と共に配布されるコンピューターの構成ファイルで指定されている既定のキャッシュ動作です。

CacheIfAvailable 3

リソースが利用可能な場合は、キャッシュからリソースの要求に応じます。それ以外の場合は、リソースの要求をサーバーに送信します。 要求されたアイテムがクライアントとサーバー間のキャッシュにある場合は、その中間キャッシュから要求に応じることもあります。

CacheOnly 2

ローカルにキャッシュされたリソースを使用して要求に応じ、キャッシュにないアイテムの要求は送信しません。 このキャッシュ ポリシー レベルが指定されている場合、アイテムがクライアントのキャッシュになければ WebException 例外がスローされます。

CacheOrNextCacheOnly 7

ローカル コンピューターのキャッシュまたはローカル エリア ネットワーク上のリモート キャッシュから、リソースの要求に応じます。 要求に応じることができない場合は、WebException 例外がスローされます。 HTTP キャッシュ プロトコルの場合、これは only-if-cached キャッシュ制御ディレクティブを使用して実現されます。

Default 0

キャッシュされたリソースのコピーを使用するか、リソースの要求をサーバーに送信して、リソースの要求に応じます。 実行される動作は、現在のキャッシュ ポリシーとキャッシュ内のコンテンツの世代によって決まります。 これが、ほとんどのアプリケーションで使用されるキャッシュ レベルです。

NoCacheNoStore 6

キャッシュのリソースを使用して要求に応じることはなく、リソースをキャッシュしません。 リソースがローカル キャッシュに存在する場合は、削除されます。 このポリシー レベルは、中間キャッシュに、リソースをキャッシュから削除する必要があることを示します。 HTTP キャッシュ プロトコルの場合、これは no-cache キャッシュ制御ディレクティブを使用して実現されます。

Refresh 8

サーバーを使用するか、またはローカル キャッシュ以外のキャッシュを使用して要求に応じます。 中間キャッシュが要求を満たす前に、そのキャッシュは、サーバーに対してキャッシュされたエントリの再検証を行う必要があります。 HTTP キャッシュ プロトコルの場合、これは max-age = 0 キャッシュ制御ディレクティブと no-cache Pragma ヘッダーを使用して実現されます。

Reload 5

サーバーを使用して要求に応じます。 応答は、キャッシュに保存される可能性があります。 HTTP キャッシュ プロトコルの場合、これは no-cache キャッシュ制御ディレクティブと no-cache Pragma ヘッダーを使用して実現されます。

Revalidate 4

キャッシュ内のリソースのコピーとサーバー上のコピーを比較します。 サーバー上のコピーが新しい場合は、要求を満たすために使用され、キャッシュ内のコピーは置き換えられます。 キャッシュ内のコピーがサーバー上のコピーと同じ場合、キャッシュされたコピーが使用されます。 HTTP キャッシュ プロトコルの場合、条件付き要求を使用してこの処理が実行されます。

次のコード例では、アプリケーション ドメインのキャッシュ ポリシーを Default に設定します。

C#
// The following method demonstrates overriding the
// caching policy for a request.
public static WebResponse GetResponseNoCache(Uri uri)
{
    // Set a default policy level for the "http:" and "https" schemes.
    HttpRequestCachePolicy policy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);
    HttpWebRequest.DefaultCachePolicy = policy;
    // Create the request.
    WebRequest request = WebRequest.Create(uri);
    // Define a cache policy for this request only.
    HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
    request.CachePolicy = noCachePolicy;
    WebResponse response = request.GetResponse();
    Console.WriteLine("IsFromCache? {0}", response.IsFromCache);
    return response;
}

注釈

この列挙は、オブジェクトで HttpRequestCachePolicy 指定されたキャッシュ レベルを設定するために使用されます。

このBypassCache値は、.NET Frameworkに付属するコンピューター構成ファイルで指定された既定のキャッシュ動作です。 クライアントとサーバー間では、エントリはキャッシュから取得したり、キャッシュに追加、またはキャッシュから削除したりされません。

プロパティは HttpWebRequest.DefaultCachePolicy 、インスタンスの既定のキャッシュ ポリシー HttpWebRequest を取得または設定するために使用されます。 プロパティは WebRequest.DefaultCachePolicy 、インスタンスの既定のキャッシュ ポリシー WebRequest を取得または設定するために使用されます。 プロパティは CachePolicy 、特定の要求のキャッシュ ポリシーを取得または設定するために使用されます。

リソースのコピーは、リソースの応答ストリームが取得され、ストリームの末尾に読み取られた場合にのみキャッシュに追加されます。 そのため、同じリソースに対する別の要求では、この要求の既定のキャッシュ ポリシー レベルに応じて、キャッシュされたコピーを使用できます。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

こちらもご覧ください