如何确定CDN缓存的过期时间以优化网站性能?

CDN缓存过期时间是指源站资源在CDN节点上缓存的时长,达到预设时间后,该资源将被标记为失效资源,如果客户端请求的资源已经失效,CDN会回源站获取最新资源并缓存到CDN节点,缓存过期时间的设置会影响回源频率和流量消耗,建议根据实际业务需求进行配置。

类型 说明
目录 为某一路径下所有资源设置相同缓存规则,例如/directory/aaa
文件后缀名 为某一文件类型资源的设置相同缓存规则,例如.jpg, .txt

缓存过期时间配置

如何确定CDN缓存的过期时间以优化网站性能?插图1
(图片来源网络,侵删)

1、目录或文件后缀名:可以按目录或文件后缀名指定资源范围,目录表示为某一路径下所有资源设置相同缓存规则,文件后缀名为某一文件类型资源的设置相同缓存规则。

2、过期时间:资源在CDN节点的缓存时间,最长可以设置3年,不常更新的静态文件(如图片、应用下载)建议设置1个月以上,频繁更新的静态文件(如JS、CSS)根据实际业务情况设置,动态文件(如PHP、JSP、ASP)建议设置为0s,即不缓存。

3、权重:缓存规则的优先级,取值为1~99,数值越大优先级越高,有多条缓存规则的情况下,建议每条缓存规则都设置不同的权重,通过权重来控制规则执行优先级。

4、规则条件:对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

CDN默认缓存规则及优先级

如何确定CDN缓存的过期时间以优化网站性能?插图3
(图片来源网络,侵删)

CDN节点在收到源站响应的静态文件资源时,会按照以下规则执行:

1、源站响应pragma:no-cache、cache-control:no-cache(或者no-store,或者max-age=0)时,不缓存

2、CDN控制台设置的缓存过期时间或者状态码过期时间

3、源站配置其他缓存规则,优先级由高至低为:cache-control > expires > last-modified > ETag

4、源站响应中使用cache-control设置过期时间,取值为max-age或s-maxage,并且max-age或s-maxage的值大于0,cache-control:max-age=3600

如何确定CDN缓存的过期时间以优化网站性能?插图5
(图片来源网络,侵删)

5、源站响应中使用expires设置过期时间,expires:Tue, 25 Nov 2031 17:25:43 GMT

6、源站响应中携带了ETag或last-modified,则使用以下规则来计算缓存时间:有last-modified,使用公式(当前时间-last-modified)* 0.1,计算结果在10秒~3600秒及之间的,取计算结果时间;小于10秒的,按照10秒处理;大于3600秒的,按照3600秒处理,只有ETag,缓存10秒。

7、源站返回的数据中ETag、last-modified、cache-control和expires这些缓存相关的响应头都没有携带,则默认不缓存

相关问答FAQs

问题1:如何判断CDN缓存是否成功?

答:可以通过HTTP响应头的X-Cache-Lookup值来判断用户访问是否命中CDN节点缓存,如果返回值是Hit From MemCache、Hit From Disktank、Cache Refresh Hit或Cache Hit中的任意一个,则表示缓存命中,否则表示未命中。

问题2:源站变更文件后,CDN加速节点上的缓存会主动、实时更新吗?

答:不会,CDN加速节点上的缓存内容不会主动、实时更新,CDN节点根据您在控制台配置的节点缓存过期配置规则更新缓存;若源站变更文件,但CDN缓存未达到过期时间,不会主动回源更新文件,此时将造成源站文件和CDN缓存的文件不一致,若您需要立即更新CDN节点的缓存,可以使用缓存刷新功能主动更新CDN节点未过期的缓存,使CDN节点缓存与源站资源保持一致。

各位小伙伴们,我刚刚为大家分享了有关cdn 缓存 过期时间的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/75447.html

小末小末
上一篇 2024年10月13日 13:11
下一篇 2024年10月13日 13:27

相关推荐