大家都知道查询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 ])
使用一个状态机示意图如下: