如何:为应用程序设置 Location-Based 缓存策略

基于位置的缓存策略允许应用程序根据所请求资源的位置显式定义缓存行为。 本主题演示如何以编程方式设置缓存策略。 有关使用配置文件为应用程序设置策略的信息,请参阅<requestCaching>元素(网络设置)。

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

  1. 创建RequestCachePolicy对象或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
    

另请参阅