1. 测试环境
注意事项:
(1)服务器端得添加防火墙规则或者直接关闭,测试的话建议直接关闭!
(2)保持源站,缓存服务器,客户端的时间同步,这个对后续测试缓存超时lm-factor算法精确度上有影响。
2 实测项目
2.1 请测试不匹配refresh_pattern或者hash_refresh_pattern任何规则的URI从返回后cache缓存的情况?
这里缓存服务器端采用默认squid.conf, 不添加refresh_pattern, hash_refresh_pattern 规则验证
2.2.1 源站没有指定Expires ,Cache-control等头信息
测试客户端第一次请求,缓存服务器(后续简称CDN)是miss的,这时候会回源去取文件,再返回给客户端,之后将文件缓存下来。这时候其实有个默认的max-age产生,过期时间为259200秒。后续在这个缓存时间内,客户端的请求,CDN都会直接返回缓存文件,产生一次hit命中。超过这个缓存时间的请求,CDN会回源确认缓存文件是否有修改,有修改则先更新文件再返回客户端,没修改则直接本地缓存文件返回给客户端。
客户端一次请求,CDN miss,回源取文件返回给客户端
CDN 上面抓到往host:www.pylt.com 的GET请求
注: 这里的max-age=259200
客户端的第二次请求,CDN直接是hit命中返回
2.1.2 源站指定no-cache
对于源站指定no-cache,no-store等头信息时,CDN默认是不缓存,所以客户端的每次请求,CDN都会miss, 然后回源取文件返回客户端。
第一次请求miss
第二次请求也是miss
CDN 对客户端每次请求都抓到回源GET信息
2.1.3 源站指定max-age
对于源站指定max-age信息,CDN这边会默认采用给定的max-age作为文件缓存时间,超过这个时间后,客户端如果有请求,CDN会发送带有If-Modified-Since头信息的请求回源确认文件是否修改,有修改则先更新文件再返回客户端,没修改则直接本地缓存文件返回给客户端,并产生一次hit命中。下面例子中,源站设置的max-age为60s