1、忽略参数
不忽略:若资源 URL 路径中问号后的参数对资源内容有影响,需保留作为缓存键,不同版本的图片链接(http://cloud.tencent.com/1.jpg?version=1 和 http://cloud.tencent.com/1.jpg?version=2),需要分别缓存不同版本的内容,此时选择“不忽略”,保留 URL 所有参数及值作为缓存键。
保留指定参数或忽略指定参数:当 URL 中除对资源内容有影响的参数外,还携带其他不影响内容的参数时,可选择此方式,比如对于链接 http://cloud.tencent.com/1.jpg?version=1&time=1651752741,可指定保留“version”参数作为缓存键,忽略“time”参数,这样,对于 version 值相同的请求,会共用一份缓存;对于 version 值不同的请求,则区分缓存。
全部忽略:在音视频场景下,若使用时间戳签名参数进行访问认证(如 http://cloud.tencent.com/1.mp4?sign=XXXXXX),由于时间戳签名不断变化,但资源内容相同,此时选择“全部忽略”,以“?”之前的链接作为缓存键,节点仅缓存一份资源。
2、忽略大小写:若资源 URL 路径中大小写差异与资源内容无关,可开启忽略大小写配置,登录 CDN 控制台,在域名管理中进入域名配置页面的缓存配置里进行设置,不同业务类型的加速域名默认设置不同,网页小文件业务类型默认不开启,下载大文件、音视频点播业务类型默认开启,单个域名至多可添加 20 条缓存键规则(含默认规则),且多条规则支持调整优先级,底部优先级大于顶部(默认规则不可调整优先级),单条文件类型/文件夹/全路径文件规则中,至多可输入 100 组内容,不同内容之间用“;”分隔,文件类型 jpg;png。
3、删除规则:单击缓存键规则操作列的删除即可删除已添加的规则,但默认规则不可删除。
1、作用:设置源站资源在 CDN 节点的缓存过期时间,以此调整缓存更新频率,CDN 会根据此配置判断缓存资源是否过期,若未过期直接返回给用户,若过期或未缓存则回源站获取资源并缓存到节点后返回给用户,若源站资源更新,可使用缓存刷新功能使 CDN 节点缓存与源站资源保持一致。
2、注意事项:缓存过期时间影响回源频率,过短会导致 CDN 频繁回源增加源站带宽,过长会使 CDN 缓存更新慢,影响用户获取最新资源,建议根据业务需求设置,源站资源更新前后使用不同名称(如以版本号命名)可避免内容变更后 CDN 节点仍返回旧资源的问题,若使用旧版本节点缓存过期配置,建议升级为最新版以支持更多功能,且升级后不可恢复至旧模式,源站可通过设置响应头 Cache-Control 控制 CDN 节点缓存过期时间(遵循源站),CDN 节点可将此响应头传递给用户控制浏览器缓存时间。
3、配置说明:登录 CDN 控制台,依次进入域名管理列表、选择域名管理、切换到缓存配置标签页查看节点缓存过期配置,单击新增规则可进入新增页面进行配置,包括选择类型(全部文件、文件后缀、文件目录、全路径文件、首页)、输入内容(根据不同类型有不同输入要求,如文件后缀名、文件目录等,且内容区分大小写匹配)、设置缓存选项(遵循源站、缓存、不缓存),遵循源站是按照源站响应头 Cache-Control 头部设置缓存时间,支持启发式缓存;缓存可自定义设置 CDN 节点缓存时间,支持强制缓存;不缓存则 CDN 节点不缓存资源,每个用户请求都直接回源获取资源响应给用户。
4、推荐配置:不常更新的静态文件(如图片、应用下载类型等)建议设置 30 天;频繁更新的静态文件(如 js、css 等)根据业务更新频率设置;动态文件(如 php、jsp、asp、aspx 等动态文件)需设置不缓存;涉及站点登入或接口查询等需与源站直接交互的请求设置不缓存。
5、配置约束:单个域名至多可添加 100 条缓存规则,多条缓存规则优先级底部大于顶部,单条文件后缀/文件目录/全路径文件规则中至多可输入 100 组内容,不同内容之间用“;”分隔。
1、作用:控制文件在浏览器端的缓存时间。
2、配置说明:在 CDN 控制台找到浏览器缓存过期配置进行修改,可根据业务需求设置合适的缓存时间,以提升用户体验和减轻源站压力。
1、多条缓存规则优先级:当配置多条缓存规则时,按照优先级权重数值越大优先级越高的原则执行,即底部规则优先级大于顶部规则,可通过单击调整优先级,拖动缓存规则顺序来改变优先级。
1、问题:如果源站资源更新了,CDN 缓存没有及时更新,导致用户看到的内容还是旧的,该怎么办?
解答:可以使用缓存刷新功能主动更新 CDN 节点的缓存,登录 CDN 控制台,在左侧目录的刷新预热中进入,按需提交 URL 刷新或目录刷新任务,URL 刷新是删除 CDN 所有节点上对应资源的缓存,而目录刷新在选择“刷新变更资源”模式时,会在用户访问匹配目录下资源时回源获取 Last-Modified 信息,若与当前缓存资源一致则直接返回已缓存资源,不一致则回源拉取资源并重新缓存;选择“刷新全部资源”时,用户访问匹配目录下资源时直接回源拉取新资源并重新缓存。
2、问题:如何判断用户访问是否命中 CDN 节点缓存?
解答:可以根据 HTTP 响应头的 X-Cache-Lookup 的值来判断,X-Cache-Lookup 有返回以下任意一个值,即代表缓存命中:Hit From MemCache、Hit From Disktank、Cache Refresh Hit、Cache Hit,如果没有这些值返回,则代表缓存未命中。