RequestCacheLevel 列挙型

定義

WebRequest およびその派生クラスを使用して取得されるリソースのキャッシュ動作を指定します。

public enum class RequestCacheLevel
public enum RequestCacheLevel
type RequestCacheLevel = 
Public Enum RequestCacheLevel
継承
RequestCacheLevel

フィールド

BypassCache 1

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

CacheIfAvailable 3

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

CacheOnly 2

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

Default 0

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

NoCacheNoStore 6

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

Reload 5

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

Revalidate 4

タイムスタンプがサーバーのリソースのタイムスタンプと同じ場合は、キャッシュされたリソースのコピーを使用して要求に応じます。それ以外の場合は、リソースがサーバーからダウンロードされ、呼び出し元に提示され、キャッシュに格納されます。

次のコード例では、リソースがキャッシュ内にある場合にのみリソースを返すポリシーを作成します。

static WebResponse^ GetResponseFromCache( Uri^ uri )
{
   RequestCachePolicy^ policy = gcnew RequestCachePolicy( RequestCacheLevel::CacheOnly );
   WebRequest^ request = WebRequest::Create( uri );
   request->CachePolicy = policy;
   WebResponse^ response = request->GetResponse();
   Console::WriteLine( L"Policy level is {0}.", policy->Level );
   Console::WriteLine( L"Is the response from the cache? {0}", response->IsFromCache );
   return response;
}
public static WebResponse GetResponseFromCache(Uri uri)
{
     RequestCachePolicy policy =
        new  RequestCachePolicy( RequestCacheLevel.CacheOnly);
    WebRequest request = WebRequest.Create(uri);
    request.CachePolicy = policy;
    WebResponse response = request.GetResponse();
    Console.WriteLine("Policy level is {0}.", policy.Level.ToString());
    Console.WriteLine("Is the response from the cache? {0}", response.IsFromCache);
    return response;
}

注釈

この列挙体のメンバーは、オブジェクトを初期化 RequestCachePolicy するために使用されます。 オブジェクトの現在の RequestCachePolicy 設定は、プロパティで HttpRequestCachePolicy.Level 使用できます。

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

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

キャッシュの動作が (またはRevalidate) 場合、CacheIfAvailable要求されたリソースのコピーは、リソースの応答ストリームが取得され、ストリームの末尾に読み取られた場合にのみキャッシュに追加されます。 この場合 CacheIfAvailable、同じリソースに対する後続の要求では、キャッシュされたコピーが使用されます。 この場合 Revalidate、同じリソースに対する後続の要求では、キャッシュされたリソースのタイムスタンプがサーバー上のリソースのタイムスタンプと同じ場合、キャッシュされたコピーが使用されます。

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

適用対象

こちらもご覧ください