背景:
CDN节点缓存策略:
可根据实际业务场景设置合理的缓存策略,比如遵循源站、遵循CDN配置的缓存时间等,可针对不同的文件,或目录等灵活设置。在缓存时间内,CDN节点直接以缓存响应给客户端;若缓存过期,用户访问会触发节点回源校验文件是否更新。若文件缓存未过期,但源站更新了并希望用户立即访问到新文件,可提交刷新操作,强制清除CDN缓存,触发回源拉取。
浏览器缓存策略:
强制缓存:当浏览器向服务器发起请求时,服务器会将缓存规则放入HTTP响应报文的HTTP头中和请求结果一起返回给浏览器,控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Control优先级比Expires高。
协商缓存:强制缓存失效后,浏览器携带缓存标识向服务器发起请求,一般是使用 if-modified-since/Last-Modified 和 if-none-match/Etag 由服务器来决定浏览器缓存的资源是否可以使用。
一般情况下,节点缓存和浏览器缓存是独立的,并不会相互影响。但腾讯云在特定平台的特定场景下,两者会出现关联性。
问题描述:
客户反馈将域名vodtest.xiaobli.xyz “全部文件不缓存” 的策略删除后,访问如下url文件,CDN节点和浏览器均会缓存住,不符合预期。
https://vodtest.xiaobli.xyz/nbi/rt/traffic/overview?platform=2&today=2021-03-18
原因分析:
1、确认域名vodtest.xiaobli.xyz的节点缓存策略。
如下所示,客户反馈的url没有匹配到其中任何一条规则。
测试验证,复现到节点缓存住的现象(Hit From Disktank3即代表缓存命中)。且从响应头可以发现:
(1)节点未缓存命中时,无 Cache-Control: max-age头部;
(2)节点缓存命中时,有Cache-Control: max-age头部。
(3)绑定源站测试,源站无Cache-Control 相关的缓存头部。
为何CDN节点会缓存住该文件?带着这个问题,翻查产品文档(https://cloud.tencent.com/document/product/228/47672),找到答案如下:
若您未配置任何规则或请求未命中配置的规则时,默认遵循以下平台策略:
客户反馈的url,未命中配置的规则,且源站无 Cache-Control 字段,则CDN节点会缓存600s。
2、确认域名vodtest.xiaobli.xyz的浏览器缓存策略。
如下所示,该域名无浏览器缓存过期配置。在这种场景下,浏览器缓存多久取决于访问某资源时,服务器响应的Cache-Control
或Expires。一般情况下这2个头部都是继承源站的,CDN侧不会进行修改。客户反馈的这个url,源站没有这2个头部,按理应该不缓存。但由于该文件CDN节点缓存后,会默认加上Cache-Control: max-age=600,才导致浏览器也缓存住了。
解决方案:
若除了有明确设置缓存策略的文件类型外,其它文件均不需要缓存,可以采用如下方案(二选一即可)。
1、在当前缓存策略的基础上,新增一条“全部文件不缓存”(优先级最低)的兜底策略,控制台操作即可。
2、针对CDN侧没有设置明确缓存策略的文件类型,源站需要返回Cache-Control:no-cache之类的不缓存头部。
开源 RPC 框架有哪些呢?一类是跟某种特定语言平台绑定的,另一类是与语言无关即...
游戏市场的热度已经不言而喻,随着民众生活水平的提升,大家对于精神娱乐生活的...
最近,在为 Coco 优化分层架构之时,我陷入了各种决策困难之中。所以我通过不断...
与普通的IDC机房或服务器厂商相比,阿里云提供的云服务器ECS具有高可用性、安全...
来源 | 阿里飞天CIO学堂微信公众号 金融数字化转型过程中,市场的细微变化,客户...
计算的下一步发展是什么,将如何影响组织的战略?专家预测了边缘计算在2021年的发...
为了使伸缩组自动加入的实例自动部署应用,您需要创建私有镜像,确保该镜像上有...
本文转载自公众号读芯术(ID:AI_Discovery) 如果你即将要面临大型科技公司的技术...
一、背景 ? 我们大部分人的编程习惯都是线性编程,所谓线性编程就是一个请求涉及...
一、数据中台是真的热 在2018年之前可能只有一少部分人在谈中台,从2018年下半年...