Share via


作法:為應用程式設定以位置為基礎的快取原則

以位置為基礎的快取原則,可讓應用程式明確地定義根據所要求資源位置的快取行為。 本主題將示範如何以程式設計方式設定快取原則。 如需使用組態檔為應用程式設定原則的詳細資訊,請參閱 <requestCaching> 元素 (網路設定)

為應用程式設定以位置為基礎的快取原則

  1. 建立 RequestCachePolicyHttpRequestCachePolicy 物件。

  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  
    

另請參閱