RequestCacheLevel Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje chování ukládání do mezipaměti pro prostředky získané pomocí WebRequest a jeho odvozené třídy.
public enum class RequestCacheLevel
public enum RequestCacheLevel
type RequestCacheLevel =
Public Enum RequestCacheLevel
- Dědičnost
Pole
BypassCache | 1 | Splňuje požadavek pomocí serveru. Z mezipaměti nejsou odebrány žádné položky, přidané do mezipaměti nebo odebrány z mezipaměti mezi klientem a serverem. Toto je výchozí chování mezipaměti zadané v konfiguračním souboru počítače, které se dodává s .NET Framework. |
CacheIfAvailable | 3 | Splňuje požadavek na prostředek z mezipaměti, pokud je prostředek k dispozici; jinak odešle požadavek na prostředek na server. Pokud je požadovaná položka dostupná v jakékoli mezipaměti mezi klientem a serverem, může být požadavek spokojen s mezipamětí. |
CacheOnly | 2 | Splňuje požadavek pomocí místně uloženého prostředku v mezipaměti; neodesílá žádost o položku, která není v mezipaměti. Pokud je tato úroveň zásad mezipaměti zadaná, vyvolá se výjimka, WebException pokud položka není v mezipaměti klienta. |
Default | 0 | Splňuje požadavek na prostředek buď pomocí kopie prostředku uložené v mezipaměti, nebo odesláním požadavku na prostředek na server. Provedení akce je určeno aktuálními zásadami mezipaměti a věkem obsahu v mezipaměti. Jedná se o úroveň mezipaměti, kterou by měla používat většina aplikací. |
NoCacheNoStore | 6 | Nikdy nesplňuje požadavek pomocí prostředků z mezipaměti a neukládá prostředky do mezipaměti. Pokud je prostředek v místní mezipaměti, odebere se. Tato úroveň zásad označuje zprostředkující mezipaměti, které by měly prostředek odebrat. V protokolu HTTP ukládání do mezipaměti se toho dosahuje pomocí direktivy |
Reload | 5 | Splňuje požadavek pomocí serveru. Odpověď může být uložena v mezipaměti. V protokolu HTTP pro ukládání do mezipaměti se toho dosahuje pomocí |
Revalidate | 4 | Splňuje požadavek pomocí kopie prostředku uložené v mezipaměti, pokud časové razítko je stejné jako časové razítko prostředku na serveru; jinak se prostředek stáhne ze serveru, zobrazí volajícímu a uloží se do mezipaměti. |
Příklady
Následující příklad kódu vytvoří zásadu, která vrátí prostředek pouze v případě, že je v mezipaměti.
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;
}
Poznámky
Členové tohoto výčtu slouží k inicializaci RequestCachePolicy objektů. Aktuální nastavení objektu RequestCachePolicy HttpRequestCachePolicy.Level je k dispozici ve vlastnosti.
Tato BypassCache hodnota je výchozí chování mezipaměti zadané v konfiguračním souboru počítače, který se dodává s .NET Framework. Z mezipaměti nejsou odebrány žádné položky, přidané do mezipaměti nebo odebrány z mezipaměti mezi klientem a serverem.
Vlastnost HttpWebRequest.DefaultCachePolicy slouží k získání nebo nastavení výchozích zásad mezipaměti pro HttpWebRequest instance. Vlastnost WebRequest.CachePolicy slouží k získání nebo nastavení výchozích zásad mezipaměti pro WebRequest instance. Vlastnost WebRequest.CachePolicy slouží k získání nebo nastavení zásad mezipaměti pro konkrétní požadavek.
Pokud je CacheIfAvailable
chování mezipaměti nebo Revalidate
, kopie požadovaného prostředku se přidá do mezipaměti pouze v případě, že se načte stream odpovědí pro prostředek a přečte se na konec datového proudu. V případě CacheIfAvailable
následných požadavků na stejný prostředek by se použila kopie uložená v mezipaměti. Pokud Revalidate
je časové razítko pro prostředek uložené v mezipaměti stejné jako časové razítko prostředku uloženého v mezipaměti, následné požadavky na stejný prostředek jako časové razítko prostředku na serveru.
Kopie prostředku se přidá do mezipaměti pouze v případě, že se načte stream odpovědí pro prostředek a načte se na konec streamu. Další požadavek na stejný prostředek by tedy mohl použít kopii uloženou v mezipaměti v závislosti na výchozí úrovni zásad mezipaměti pro tento požadavek.