响应过期缓存

响应过期缓存功能是阿里云CDN服务中一项重要的容错和可用性保障措施。主要用于在源站出现异常(4xx、5xx、超时)的情况下,利用阿里云CDN节点上已过期的静态资源缓存内容继续提供服务。这样,即使源站短时间出现异常,也能够尽可能确保用户能够访问到网站,提高网站的可用性和用户体验。对于动态资源请求无需开启此功能。

适用场景

源站故障或不可用:当源站由于各种原因(如服务器宕机、网络中断、程序错误等)出现故障或不可用时,会导致阿里云CDN节点无法从源站获取最新的内容。

  • 如果没有启用响应过期缓存功能,阿里云CDN节点在收到用户请求时,会向源站发起请求,但由于源站异常,请求可能会失败,导致用户无法访问网站。

  • 启用响应过期缓存功能后,即使源站异常,阿里云CDN节点也可以将过期的缓存内容返回给用户,保证网站的可访问性。

技术原理

image

操作步骤

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 在指定域名的左侧导航栏,单击缓存配置

  5. 选择响应过期缓存页签,单击修改配置

    image

    参数

    是否必填

    默认值

    说明

    遵循源站

    非必填

    默认关闭。默认情况下,以响应过期缓存功能中设置的过期延长时间为准。

    开启遵循源站的情况下,如果源站返回文件时携带了缓存策略Cache-Control: stale-if-error=xx,阿里云CDN将优先遵循源站响应的缓存策略里面stale-if-error参数设置的时间来作为缓存过期延长时间。

    源站异常状态码

    非必填

    默认情况下,源站异常的定义是指,源站响应超时和源站响应5xx状态码。

    用于设置在源站返回哪些状态码时适用于此功能配置,支持直接输入4xx、5xx来模糊匹配,也支持输入502、504这样的状态码来精确匹配。

    支持输入多个状态码,输入多个状态码的情况下,各个状态码之间用逗号进行分割。

    过期延长时间

    非必填

    默认过期延长时间是3600秒,即1个小时

    过期之后,希望保留旧缓存的最长时间,最小设置为1秒。

  6. 单击确定,完成配置。

常见问题

“状态码过期时间”和“响应过期缓存”功能的区别是什么?

状态码过期时间响应过期缓存都是阿里云CDN提供的缓存优化功能,但它们的触发条件、缓存内容、目的和配置方式都不相同。状态码过期时间主要用于缓存特定状态码的响应,减少对源站的请求;而响应过期缓存则用于在源站异常时利用过期缓存内容提高可用性。根据实际的业务需求和场景,可以选择适合的功能来优化网站的性能和用户体验。

区别

状态码过期时间

响应过期缓存

触发条件

状态码过期时间是针对源站返回特定HTTP状态码的响应进行缓存。

响应过期缓存是在源站出现故障、超时或返回特定错误状态码时触发。

缓存内容

状态码过期时间缓存的是源站返回的特定状态码响应,如404页面等。

响应过期缓存使用的是阿里云CDN节点上已经过期的缓存内容,可以是任意类型的资源。

目的

状态码过期时间的目的是减少对源站的请求次数,降低源站负载,加快响应速度。

响应过期缓存的目的是在源站异常时,利用过期缓存内容提高网站的可用性和用户体验。

配置方式

状态码过期时间通常在阿里云CDN的缓存配置中单独设置,针对特定的HTTP状态码。

响应过期缓存通常通过设置缓存过期时间和启用相关功能来实现。

综上所述,当源站出现异常,如回源超时、返回5xx4xx状态码时,建议配置“响应过期缓存”功能,更适用于应对源站异常、提高可用性和用户体验的场景。而“状态码过期时间”功能更适用于缓存一些相对特定的HTTP状态码(如404、500等)、提高响应速度、降低源站负载的场景,在源站异常时的作用相对有限。根据实际情况,您可以选择单独配置其中一个功能,或者同时配置两个功能,以达到最佳的性能和可用性。

但是需要注意的是,您需要根据实际的业务需求和网站架构来设置合适的缓存时间和规则,过长的缓存时间可能导致用户无法及时获取最新内容,而过短的缓存时间则可能无法有效减轻源站压力。