CDN缓存不命中排查-阿里云开发者社区

开发者社区> 何昔> 正文

CDN缓存不命中排查

简介: CDN的作用在于就近缓存,缓存命中情况下对应资源的访问速度会相对较快,加速效果较好;如果CDN缓存命中率差,对应的CDN加速效果是相对不理想的,故提升CDN缓存命中率对于CDN加速效果有着重大影响,本文旨在让读者可以根据案例定位对应资源为何缓存不命中,如何才能缓存命中提高缓存命中率
+关注继续查看

场景:CDN的作用在于就近缓存,缓存命中情况下对应资源的访问速度会相对较快,加速效果较好;如果CDN缓存命中率差,对应的CDN加速效果是相对不理想的,故提升CDN缓存命中率对于CDN加速效果有着重大影响,本文旨在让读者可以根据案例定位对应资源为何缓存不命中,如何才能缓存命中提高缓存命中率。

案例一:源站设置了no cache,private

(1)Cache control设置nocache, private
1

curl -I http://m.***.net/cha.html
HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/html; charset=utf-8
Content-Length: 13082
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
X-AspNet-Version: 4.0.30319
Set-Cookie: ASP.NET_SessionId=zpt15ddhng0voq5o3qanfvrw; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Fri, 23 Sep 2016 10:49:33 GMT
Via: cache15.l2cm12[20,200-0,M], cache4.l2cm12[20,0], kunlun8.cn180[88,200-0,M], kunlun6.cn180[89,0]
X-Cache: MISS TCP_MISS dirn:-2:-2
X-Swift-SaveTime: Fri, 23 Sep 2016 10:49:34 GMT
X-Swift-CacheTime: 0
Timing-Allow-Origin: *
EagleId: 3ad8110614746277741253274e

解决:取消源站cache contorl:nocache 或者private的设置

(2) Pragma 设置 nocache, private,标注:Pragma行是为了兼容HTTP1.0,作用与Cache-Control是一样的

curl -I http://srv.***.net/media/html/2016mzwhjxy/zhengce/sp.html
HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/html; charset=UTF-8
Content-Length: 258
Connection: keep-alive
Pragma: no-cache
Cache-Control: max-age=86400
Via: cache12.l2cm12[106,200-0,M], cache15.l2cm12[106,0], kunlun4.cn125[113,200-0,M], kunlun6.cn125[113,0]
X-Cache: MISS TCP_MISS dirn:-2:-2
X-Swift-SaveTime: Thu, 01 Sep 2016 08:26:12 GMT
X-Swift-CacheTime: 0
Timing-Allow-Origin: *
EagleId: 6a78b50614727183720984671e

解决:取消源站的Pragma: no-cache设置

案例二:cdn设置对应规则缓存时间为0

curl -I http://dccdn.***.cn/1.jpg
HTTP/1.1 200 OK
Server: Tengine
Content-Type: image/jpeg
Content-Length: 277485
Connection: keep-alive
Date: Wed, 28 Sep 2016 12:51:39 GMT
x-oss-request-id: 57EBBCDB95B328E7E170F7EE
Accept-Ranges: bytes
ETag: "6B17A7CF2B799761F189D1D52011FDE2"
Last-Modified: Wed, 28 Sep 2016 12:48:57 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 12355230545077291646
Cache-Control: max-age=80
Content-MD5: axenzyt5l2HxidHVIBH94g==
x-oss-server-time: 45
Via: cache18.l2et15[60,200-0,M], cache9.l2et15[81,0], kunlun9.cn192[110,200-0,M], kunlun9.cn192[147,0]
X-Cache: MISS TCP_MISS dirn:-2:-2
X-Swift-SaveTime: Wed, 28 Sep 2016 12:51:39 GMT
X-Swift-CacheTime: 0
Timing-Allow-Origin: *
EagleId: 3adad78914750670995691589e

排查
1)源站未设置nocache private等;
2)源站存在Cache-Control缓存头
3)查CDN缓存规则配置:
3

问题定位:cdn配置了缓存时间为0
解决:取消该cdn缓存规则的配置

案例三:cdn 未设置缓存规则,并且源站也未抛出与缓存相关的头如cache control,Expires,(Last-Modified/If-Modified-Since, Etag/If-None-Match要配合Cache-Control使用)等

2

解决:cdn设置缓存规则;
建议: 建议设置目录缓存 / ,权重设置的低一点,来保证全站缓存
参考:https://help.aliyun.com/document_detail/27136.html?spm=5176.doc27140.6.139.ddB4Tw

案例四:源站设置:cache-control:max-age=0

5

解决:取消源站的max-age=0,cdn设置缓存规则;
建议: 建议设置目录缓存 / ,权重设置的低一点,来保证全站缓存
参考https://help.aliyun.com/document_detail/27136.html?spm=5176.doc27140.6.139.ddB4Tw

案例五:cdn配置缓存规则,源站未设置nocache,private;Vary: Accept-Encoding, Cookie导致缓存不能命中,注意:这边x-cache 是有对应时间的,但是每次访问还是miss的

4

排查
1)源站未设置nocache,private;
2)源站存在cache-control等头;
3)cdn未设置缓存规则:缓存时间为0;
4)cdn返回的response头包含了 X-Swift-CacheTime:7200
5)源站返回的vary头包含cookie每次刷新cookie的值都在变,所以cache命中不了
解决:取消源站的Vary: Accept-Encoding, Cookie

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10051 0
CDN - 域名解析错误排查
浅谈 用过经过 CDN 加速后有两段解析过程 1)localDNS 通过本地缓存或者递归查找的过程。2)CDN NS 授权服务器走 CDN 调度返回的一个结果。 第一种,可以通过常用的 dig +trace 看完整的域名递归过程第二种,可以通过一些解析调度的网络来分析比如 ipip.net; 案例分析 案例 客户端在河北电信出口,但是解析到了江苏镇江电信。
2370 0
CDN 499 问题排查
本文主要针对客户 CDN 加速域名出现 499 的排查方法
1765 0
CDN - 跨域失败排查
背景 某个客户在阿里云 CDN 配置了加速域名 al.p2.com ,客户自己的主站域名 www.a.com 加载 al.p2.com 下的资源出现跨域的报错; 了解跨域 跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。
2503 0
使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
碰到问题:移动用户访问web服务器www.osyunwei.com很慢解决办法:1、在移动机房放置一台nginx反向代理服务器2、通过域名DNS智能解析,所有移动用户访问www.osyunwei.com时解析到nginx反向代理服务器3、nginx反向代理服务器与web服务器之间采用专线连接系统运维  www.
1635 0
阿里云CDN的缓存策略是怎么运作的?
CDN是整个阿里云产品框架中是一个很重要的一环,因为它主要是在产品最外层,保证真实的客户在访问服务器端资源的时候能够有一个较好的体验。 那么CDN底层主要是通过什么样的手段去实现的呢?其实它就相当于在客户的就近的地区,布置了对应的节点,并且把对应的一些静态资源,比如说图片、视频等这些资源预先先缓存到对应的节点上。
1596 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13865 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11887 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7358 0
+关注
何昔
对OSS、CDN、MTS音视频等有一定认知
15
文章
0
问答
来源圈子
更多
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载