如何:为应用程序设置基于位置的缓存策略

基于位置的缓存策略允许应用程序基于所请求资源的位置显式定义缓存行为。 本主题演示如何以编程方式设置缓存策略。 有关使用配置文件为应用程序设置策略的信息,请参阅 <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  
    

另请参阅