在 Cloudflare CDN(内容分发网络)的上下文中,保留和新鲜度是指两个独立但相关的概念。对于缓存中的对象,新鲜度是在不咨询其来源的情况下应被视为有效的时间,而保留是指它在被移除之前在缓存中停留的时间。
当请求资源时,Cloudflare 会缓存它,以便后续请求可以在不联系源站服务器的情况下提供。如果缓存对象未被再次请求,它最终会被移除以为更新、更受欢迎的内容腾出空间。此移除过程称为逐出(eviction)。
Cloudflare 使用最近最少使用(LRU)算法来决定缓存满时逐出哪些对象。对象的保留期是它在被逐出之前在缓存中停留的时间。保留由对象的相对受欢迎程度和缓存大小决定,不可配置。
新鲜度(也称为 Time to Live,TTL)决定缓存在不再次检查源站的情况下可以使用对象多长时间。例如,如果对象的 TTL 为五分钟,缓存在首次收到后五分钟内直接提供它。五分钟后,Cloudflare 必须在再次提供之前与源站确认对象仍然有效。有几种方式为通过 Cloudflare CDN 提供的资源配置 TTL:
-
在源站 cache-control 响应标头中包含 Origin Cache Control 或 CDN Cache Control 指令,如
max-age或s-maxage。 -
使用 Cache Rules 或 Workers。
如果缓存中的对象不再新鲜,Cloudflare 会与源站重新验证它。当设置了 stale-while-revalidate 时,重新验证在过期时异步发生——访问者在 Cloudflare 在后台获取新副本的同时继续从缓存获得服务。没有此指令时,传入请求在收到内容之前等待源站响应。源站可以确认缓存对象仍然有效(刷新其 TTL)或返回新版本以替换它。请参阅重新验证了解详情。