CDN缓存不命中排查

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 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

目录
相关文章
|
8月前
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
136 0
|
8月前
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(二)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(二)
132 0
|
8月前
|
缓存 弹性计算 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(一)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)
159 0
|
11月前
|
存储 缓存 NoSQL
短链系统设计性能优化-缓存提速及CDN
如何提高响应速度,和直接打开原链接一样的效率。 明确,这是个读多写少业务。
129 0
|
缓存 CDN
CDN添加缓存配置
CDN添加缓存配置自制脑图
137 0
CDN添加缓存配置
|
存储 缓存 负载均衡
CDN前传:Internet Web 复制和缓存分类法
自 1990 年推出以来,万维网已从简单的客户端服务器模型演变为复杂的分布式体系结构。这种演变主要是由于与指数增长相关的扩展问题。已经出现了不同的范例和解决方案来满足特定的要求。为满足这种增长需求而采用的两个核心基础架构组件是复制和缓存。在许多情况下,需要 Web 缓存和复制服务能够共存。
185 0
CDN前传:Internet Web 复制和缓存分类法
|
缓存 CDN
CDN缓存设置——刷新缓存
CDN缓存设置——刷新缓存自制脑图
278 1
CDN缓存设置——刷新缓存
|
缓存 CDN
CDN缓存设置——设置缓存过期时间
CDN缓存设置——设置缓存过期时间自制脑图
145 0
CDN缓存设置——设置缓存过期时间
|
域名解析 缓存 负载均衡
怎么设置腾讯云CDN缓存规则
CDN主要功能是在不同的地点缓存内容,通过负载均衡技术,将用户的请求定向到最合适的缓存服务器上去获取内容,比如说,是北京的用户,我们让他访问北京的节点,深圳的用户,我们让他访问深圳的节点。通过就近访问,加速用户对网站的访问。解决Internet网络拥堵状况,提高用户访问网络的响应速度。
273 0
怎么设置腾讯云CDN缓存规则