为了帮助确保将最新内容返回到客户端应用程序,客户端缓存策略和服务器重新验证要求的交互始终会导致最保守的缓存策略。 本主题中的所有示例都演示了 1 月 1 日缓存的资源的缓存策略,并在 1 月 4 日过期。
在以下示例中,最大过期值(maxStale
)与最大年龄(maxAge
)一起使用:
如果缓存策略设置
maxAge
= 5 天,并且未根据maxStale
值指定maxAge
值,则内容在 1 月 6 日之前可用。 但是,根据服务器的重新验证要求,内容将于 1 月 4 日到期。 由于内容到期日期更保守(更快),因此它优先于maxAge
策略。 因此,内容将于 1 月 4 日过期,并且必须重新验证,即使其最大年龄尚未达到。如果缓存策略设置
maxAge
= 5 天和maxStale
= 3 天,则根据maxAge
该值,内容可用,直到 1 月 6 日。 根据该值maxStale
,内容在 1 月 7 日之前可用。 因此,会在 1 月 6 日重新验证此内容。如果缓存策略设置
maxAge
= 5 天和maxStale
= 1 天,则根据maxAge
该值,内容可用,直到 1 月 6 日。 根据该值maxStale
,内容在 1 月 5 日之前可用。 因此,会在 1 月 5 日重新验证此内容。
当最大期限小于内容过期日期时,更保守的缓存行为始终占上风,最大过期值不起作用。 以下示例说明了当内容在过期之前到达最大年龄(maxStale
)值时,设置最大陈旧度(maxAge
)值的效果:
如果缓存策略将
maxAge
设置为 1 天,并且对maxStale
未指定任何值,那么即使内容尚未过期,也会在 1 月 2 日重新验证内容。如果缓存策略集
maxAge
= 1 天和maxStale
= 3 天,则会在 1 月 2 日重新验证内容,以强制实施更保守的策略设置。如果缓存策略设置
maxAge
= 1 天和maxStale
= 1 天,则内容在 1 月 2 日重新验证。