基于位置的缓存策略根据请求的资源可从何处定义有效缓存条目的新鲜度。 如果使用缓存资源并不违反服务器指定的重新验证要求,则缓存资源有效。 使用 RequestCachePolicy 或 HttpRequestCachePolicy 类构造函数以编程方式创建基于位置的缓存策略。 基于位置的策略的类型使用 RequestCacheLevel 或 HttpRequestCacheLevel 枚举值传递给构造函数。 有关创建基于位置的缓存策略的代码示例,请参阅 “如何:为应用程序设置 Location-Based 缓存策略”。 以下部分介绍超文本传输协议(http 和 https)资源的每种基于位置的缓存策略。
“如果可用则缓存”策略
如果请求的有效资源位于本地缓存中,则使用缓存的资源;否则,资源请求将发送到服务器。 如果请求的资源在客户端和服务器之间的任何缓存中都可用,则中间缓存可以满足请求。
“仅缓存”策略
如果请求的有效资源位于本地缓存中,则使用缓存的资源。 指定此缓存策略级别时,如果项不在本地缓存中, WebException 则会引发异常。
“缓存或仅下一个缓存”策略
如果有效的请求资源位于本地缓存或局域网上的中间缓存中,则使用缓存的资源。 否则,将引发 WebException 异常。 在 HTTP 缓存协议中,这是通过 only-if-cached 缓存控制指令实现的。
无缓存无存储策略
请求的资源永远不会从任何缓存中使用,并且永远不会放置在任何缓存中。 如果请求的资源存在于本地缓存中,则会将其删除。 此策略级别指示中间缓存还应删除资源。 在 HTTP 缓存协议中,这是使用无存储缓存控制指令实现的。
刷新策略
如果从服务器获取或在本地缓存之外的缓存中找到请求的资源,则可以使用请求的资源。 在中间缓存满足请求之前,该缓存必须使用服务器重新验证其缓存项。 在 HTTP 缓存协议中,这是使用 max-age = 0 缓存控制指令和 no-cache Pragma 标头实现的。
重新加载策略
必须从服务器获取请求的资源。 响应可能保存在本地缓存中。 在 HTTP 缓存协议中,这是使用无缓存缓存控制指令和 no-cache Pragma 标头实现的。
重新验证策略
将缓存中资源的副本与服务器上的副本进行比较。 如果服务器上的副本较新,则它用于满足请求并替换缓存中的副本。 如果缓存中的副本与服务器副本相同,则使用缓存副本。 在 HTTP 缓存协议中,这是使用条件请求实现的。