“所有文件配置缓存30天,相同CDN节点测试,一周后请求怎么就回源了?”
‘’明明设置了CDN缓存时间为0,为啥还缓存?”
带着这两个问题,咱们从缓存空间,内容和策略三方面来介绍CDN节点缓存机制
1.缓存空间
CDN服务器会将内容存储,以块形式,存储到磁盘中。磁盘容量是有限的,为了保持容量在一个健康水位,一般遵循删除策略(文件最久未访问)来淘汰文件。假设,互联网上所有静态资源在CDN节点上配置缓存时间都是一年,如果磁盘严格遵守缓存时间来缓存内容,这一年下来,CDN机房都没有地方来放磁盘了。因此在CDN上配置较长的缓存时间,CDN节点行为是尽力而为,并不是严格遵守。这里应该明白第一个问题了吧
2.缓存内容
CDN节点到底缓存源站哪些内容呢?CDN缓存内容来源于HTTP请求响应内容,HTTP响应包括状态行,header头部,body。这里问一个问题
如果CDN节点把源站所有响应都缓存下来,有什么影响?讲道理,缓存就应该把源站响应内容全盘照收,然后将缓存内容返回给用户。但这里有问题,既然是HTTP响应中,除了body之外,状态行和header很多字段是重复的,如果把这些字段都缓存在磁盘,对磁盘空间是一种浪费。更糟糕的情况,如果都是1K小文件,一个盘里存储内容都是状态行和header,显然是不合理的。一般CDN厂家,对缓存HTTP响应header策略有差异,但基本规则都差不多:
3.缓存策略
CDN缓存策略。可能大家对这个概念比较模糊,咱们细化为两个问题:
CDN节点基于什么条件来决定该文件是否缓存?
用户请求,节点发现缓存文件过期,CDN处理逻辑?这里不同厂家处理方式不一样
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。