首页 > 解密ATS 4.2.3的缓存状态密码

解密ATS 4.2.3的缓存状态密码

大家都知道查询ATS缓存一个对象的缓存状态标志码,就是通过如下官方链接

http://trafficserver.apache.org/tools/via

下面我将通过命令行手动缓存资源的方法来进一步认识ATS缓存对象的状态变化,加深理解,以作整理和备忘,各位大牛敬请绕行!

开启方法:

traffic_line -s  proxy.config.http.insert_request_via_str -v 1    

traffic_line -s  proxy.config.http.insert_response_via_str -v 2  #会产生类似Via: http/1.1 localhost (ApacheTrafficServer/4.2.3 [cHs f ])的头

开始测试:

在线上服务器上通过wget或是curl手动来缓存一个文件,并研究缓存状态

首次请求得到[cMsSfW]

curl -vx 127.0.0.1:8081 -o 463238.m4a "http://cc.stream.qqmusic.qq.com/463238.m4a?vkey=EB9DCBE77D88ED0335E7566A9FA8A3681BA1A7AD4DB5545C48CDAD9610601132&guid=ffffffffbb69dc14fffffffffb7c39fa&fromtag=57"



它的含义是



第二次请求同一url,得到[cHs f ]



它的含义是



第三次请求同一url,得到[cRs f ],第四次及以后请求缓存状态码都相同



它的含义是



使用下面的命令手动清除该资源

curl -X PURGE -vx "127.0.0.1:8081" "http://cc.stream.qqmusic.qq.com/463238.m4a?vkey=EB9DCBE77D88ED0335E7566A9FA8A3681BA1A7AD4DB5545C48CDAD9610601132&guid=ffffffffbb69dc14fffffffffb7c39fa&fromtag=57"



得到缓存状态码[cRs f ],它的含义同上,再删除一次,得到[c s f ],



它的含义是



如果我们直接访问一个具有防盗链的资源,我们得到[cMsSf ]

curl -vx 127.0.0.1:8081 -o 463238.m4a "http://cc.stream.qqmusic.qq.com/463238.m4a"



它的含义是



如果我们启用cacheurl模块,并访问同一资源的另一个动态链接,

curl -vx 127.0.0.1:8081 -o 463238.m4a "http://cc.stream.qqmusic.qq.com/463238.m4a?vkey=A3710A40FB1D1DC4A2D4ECB34DFFDFD63DAC8D5FEC53833D651DB9E0F4CBB346&guid=00000000327ec818ffffffffbfdeefc7&fromtag=57"



我们仍然得到[cRs f ],含义同上

另外补充几种异常:

服务器回源超时得到[cMsEf ],





它的含义是



当使用正则刷新插件regex_revalidate来请求待刷新的url时,我得到缓存状态[cMsSf ],



它的含义是



当我去请求qqmusic上的一个文件时,我得到了下面的响应码[cSsNfU]



它的含义,我现在改用traffic_via工具获取如下



进一步发现有下面的日志



它的含义是





它的含义如下





综合上面各种场景,我得到如下状态码

(ApacheTrafficServer/4.2.3 [cMsSfW])

(ApacheTrafficServer/5.3.0 [cMsSf ])

(ApacheTrafficServer/5.3.0 [cSsNfU])

(ApacheTrafficServer/5.3.0 [cSsSfD])

(ApacheTrafficServer/4.2.3 [cHs f ])

(ApacheTrafficServer/4.2.3 [cRs f ])

(ApacheTrafficServer/4.2.3 [c s f ])

(ApacheTrafficServer/4.2.3 [cMsSf ])

(ApacheTrafficServer/4.2.3 [cMsEf ])

(ApacheTrafficServer/6.2.1 [cSsNfD])

(ApacheTrafficServer/6.2.1 [c sSf ])

使用一个状态机示意图如下:



更多相关: