RequestCacheLevel 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定使用 WebRequest 及其衍生類別取得之資源的快取行為。
public enum class RequestCacheLevel
public enum RequestCacheLevel
type RequestCacheLevel =
Public Enum RequestCacheLevel
- 繼承
欄位
| 名稱 | 值 | Description |
|---|---|---|
| Default | 0 | 透過使用資源快取副本或向伺服器發送資源請求,來滿足對資源的請求。 所採取的行動取決於當前快取政策及快取內容的使用年限。 這是大多數應用程式應該使用的快取層級。 |
| BypassCache | 1 | 透過伺服器來滿足請求。 用戶端與伺服器之間的快取不會被取取、加入快取或移除任何資料。 這是隨 .NET Framework 附帶的機器設定檔中預設的快取行為。 |
| CacheOnly | 2 | 使用本地快取資源滿足請求;不會發送不在快取中的項目請求。 當指定此快取政策層級時, WebException 若該項目不在用戶端快取中,則會拋出例外。 |
| CacheIfAvailable | 3 | 滿足快取對資源的請求(若資源可用);否則,會向伺服器發送資源請求。 如果請求的項目在用戶端與伺服器之間的任一快取中可用,則中介快取可能會滿足該請求。 |
| Revalidate | 4 | 若時間戳記與伺服器資源的時間戳相同,則透過快取的資源副本滿足請求;否則,資源會從伺服器下載,呈現給呼叫者,並儲存在快取中。 |
| Reload | 5 | 透過伺服器來滿足請求。 回應可能會被儲存在快取中。 在 HTTP 快取協定中,這是透過 |
| NoCacheNoStore | 6 | 從不使用快取資源來滿足請求,也不會快取資源。 如果資源存在於本地快取中,則會被移除。 此政策層級指示中介快取應移除該資源。 在 HTTP 快取協定中,這是透過 |
範例
以下程式碼範例建立的政策是,只有資源在快取中時才回傳。
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 屬性用來取得或設定特定請求的快取政策。
若快取行為為 CacheIfAvailable 或 Revalidate,則只有當該資源的回應串流被檢索並讀取到串流末端時,才會將該請求資源的副本加入快取。 當 CacheIfAvailable時,對同一資源的後續請求會使用快取的副本。 若快 Revalidate取資源的時間戳記與伺服器資源的時間戳相同,則對同一資源的後續請求將使用快取副本。
只有當資源的回應串流被檢索並讀取到串流末端時,才會將資源的副本加入快取。 因此,同一資源的另一個請求可能會使用快取副本,這取決於該請求的預設快取政策層級。