共用方式為


如何:為應用程式設定基於位置的快取策略

基於位置的快取政策允許應用程式根據請求資源的位置明確定義快取行為。 本主題示範如何以程式化方式設定快取政策。 關於如何使用設定檔設定應用程式的政策,請參見<requestCaching>元素(網路設定)。

為應用程式設定基於位置的快取政策

  1. 建立一個 RequestCachePolicy OR HttpRequestCachePolicy 物件。

  2. 將政策物件設為應用程式域的預設值。

設定一個從快取中擷取請求資源的政策

  • 建立一個政策,若有可用的快取資源,則從快取中提取;否則,將請求發送至伺服器,並將快取層級設為CacheIfAvailable。 請求可由用戶端與伺服器間的任何快取(包括遠端快取)完成。

    public static void UseCacheIfAvailable()
    {
        HttpRequestCachePolicy policy = new HttpRequestCachePolicy
            (HttpRequestCacheLevel.CacheIfAvailable);
        HttpWebRequest.DefaultCachePolicy = policy;
    }
    
    Public Shared Sub UseCacheIfAvailable()
        Dim policy As New HttpRequestCachePolicy _
             (HttpRequestCacheLevel.CacheIfAvailable)
        HttpWebRequest.DefaultCachePolicy = policy
    End Sub
    

設定一個政策,阻止任何快取提供資源

  • 建立一個政策設定,將快取層級設定為 NoCacheNoStore,以防止任何快取提供所需的資源。 此政策層級會將資源從本地快取中移除(若資源存在),並指示遠端快取也應移除該資源。

    public static void DoNotUseCache()
    {
    HttpRequestCachePolicy policy = new HttpRequestCachePolicy
            (HttpRequestCacheLevel.NoCacheNoStore);
        HttpWebRequest.DefaultCachePolicy = policy;
    }
    
    Public Shared Sub DoNotUseCache()
        Dim policy As New HttpRequestCachePolicy _
            (HttpRequestCacheLevel.NoCacheNoStore)
        HttpWebRequest.DefaultCachePolicy = policy
    End Sub
    

設定一個策略,只有當請求的資源存在於本地快取中時才會回傳

  • 建立一個政策,僅在請求的資源位於本地快取時回傳,方法是將快取層級設為 CacheOnly。 如果請求的資源不在快取中, WebException 則會拋出例外。

    public static void OnlyUseCache()
    {
        HttpRequestCachePolicy policy = new HttpRequestCachePolicy
            (HttpRequestCacheLevel.CacheOnly);
        HttpWebRequest.DefaultCachePolicy = policy;
    }
    
    Public Shared Sub OnlyUseCache()
        Dim policy As New HttpRequestCachePolicy _
            (HttpRequestCacheLevel.CacheOnly)
        HttpWebRequest.DefaultCachePolicy = policy
    End Sub
    

設定策略以阻止本地快取提供資源

  • 建立一個政策,防止本地快取提供所需資源,方法是將快取層級設為 Refresh。 若請求的資源位於中間快取中且成功重新驗證,該中間快取即可提供所請求的資源。

    public static void DoNotUseLocalCache()
    {
     HttpRequestCachePolicy policy = new HttpRequestCachePolicy
            (HttpRequestCacheLevel.Refresh);
        HttpWebRequest.DefaultCachePolicy = policy;
    }
    
    Public Shared Sub DoNotUseLocalCache()
        Dim policy As New HttpRequestCachePolicy _
            (HttpRequestCacheLevel.Refresh)
        HttpWebRequest.DefaultCachePolicy = policy
    End Sub
    

設定一個策略,防止快取提供所請求的資源

  • 建立一個策略,將快取層級設為Reload,以防止任何快取提供所請求的資源。 伺服器回傳的資源可以儲存在快取中。

    public static void SendToServer()
    {
    HttpRequestCachePolicy policy = new HttpRequestCachePolicy
            (HttpRequestCacheLevel.Reload);
        HttpWebRequest.DefaultCachePolicy = policy;
    }
    
    Public Shared Sub SendToServer()
        Dim policy As New HttpRequestCachePolicy _
            (HttpRequestCacheLevel.Reload)
        HttpWebRequest.DefaultCachePolicy = policy
    End Sub
    

設定一個原則,允許任何快取在伺服器上的資源不比快取的副本更新時,可以提供所請求的資源。

  • 建立一個政策,若伺服器上的資源不比快取的副本更新,則允許任何快取提供請求的資源,方法是將快取層級設為 Revalidate

    public static void CheckServer()
    {
    HttpRequestCachePolicy policy = new HttpRequestCachePolicy
             (HttpRequestCacheLevel.Revalidate);
        HttpWebRequest.DefaultCachePolicy = policy;
    }
    
    Public Shared Sub CheckServer()
        Dim policy As New HttpRequestCachePolicy _
            (HttpRequestCacheLevel.Revalidate)
        HttpWebRequest.DefaultCachePolicy = policy
    End Sub
    

另請參閱