在线cdn缓存未命中原因诊断

在线CDN缓存未命中诊断工具介绍


通过近期对cdn的了解和研究,包括缓存未命中的问题,综合了一下,写成了这个cdn诊断小工具

您可以直接输入已经采用cdn加速的网址,可以帮您检测到是否开启了cdn缓存,cdn缓存时间,cdn是否命中

通过网址返回的response headers 可以帮您检测缓存未命中的可能原因

如果源站的http头部包含一些不缓存的信息,那么CDN”也许“会相应的继承源站发出的HTTP状态。

以下http响应头部信息都有可能导致您的cdn对源站的缓存

Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0,private 和 Pragma: no-cache

Pragma:no-cache

以下http响应头会被cdn对源站数据缓存

Cache-Control:max-age,public,直接设置一个数值(以秒为单位)

怎样决定一个资源的Cache-Control策略

有一篇介绍HTTP缓存原理的文章,大家如果对cdn缓存原理不理解,可以看一下

程序也是根据检测文件头,来判断cdn未缓存源站数据的原因,其实通过上面提供的文件头,大家可以自己抓包排查

下面是抓包的一个本站图标的http返回文件头,大家可以看到完美命中

HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
Date: Sun, 10 Mar 2019 18:01:50 GMT
Vary: Accept-Encoding
Ali-Swift-Global-Savetime: 1552240910
Via: cache29.l2cm9[562,200-0,M], cache8.l2cm9[563,0], kunlun6.cn1587[0,200-0,H], kunlun6.cn1587[16,0]
Age: 397715
X-Cache: HIT TCP_HIT dirn:0:507325517
X-Swift-SaveTime: Sun, 10 Mar 2019 18:01:50 GMT
X-Swift-CacheTime: 2592000
Cache-Control: 604800
Timing-Allow-Origin: *
EagleId: dd0f412415526386252751670e
Content-Length: 62573
					

下面这个是缓存未命中的

HTTP/1.1 200 OK
Server: Tengine
Content-Type: application/javascript; charset=utf-8
Content-Length: 744
Connection: keep-alive
Date: Fri, 15 Mar 2019 08:26:13 GMT
Ali-Swift-Global-Savetime: 1552638373
Via: cache26.l2cm9[22,200-0,M], cache12.l2cm9[23,0], kunlun10.cn1587[94,200-0,M], kunlun6.cn1587[96,0]
X-Cache: MISS TCP_MISS dirn:-2:-2
X-Swift-SaveTime: Fri, 15 Mar 2019 08:26:13 GMT
X-Swift-CacheTime: 0
Timing-Allow-Origin: *
EagleId: dd0f412415526383737976066e
					

程序诊断结果仅供参考!

cdn缓存命中率低,对网站有影响吗?


如果网站CDN命中率低,将会导致cdn频繁回源,不但无法实现CDN加速,甚至出现“由于服务器和访客中间隔了一个CDN反而加载更慢”的现象,还会造成服务器的压力,同时也失去了cdn的真正优势

如果网站更新不频繁,强烈建议开启cdn缓存