当咱们使用 Squid 的时候,是否是经常会有个问题,怎么查文件是否存在?你们是怎么查的,我想大多都是使用 wget 来查,好比wget -S。 若是返回的响应头部X-Cache显示 HIT, 那么文件就是从 squid的缓存中读取的,而不是从源网站读取,但但这样作效率比较低。若是有大量的文件,好比 100万份,那怎么办, 难道通通下载一次?有人就讲了, 我不是能够发 Head 请求查吗?好比使用 Curl -I <URL>来查, 这样就没有下载文件的过程,多快啊。 事实是这么简单吗?php
1. 当文件不存在时首次查询 Squidshell
咱们来使用 curl 加 -I 的参数来查询 缓存
curl -I http://www.php-oa.com/data/emagazine/mode/mode_10.exe
......
X-Cache: MISS from BM_SC.php-oa.com
嗯,很好,不存在,正常。文件不存在时就显示 MISS ,这是对的。 bash
2. 上次查询后在次查询 Squid
咱们来使用 curl -I 来再查一次curl
curl -I http://www.php-oa.com/data/emagazine/mode/mode_10.exe ......... X-Cache: HIT from BM_SC.php-oa.com
3. 使用 Wget 确认查询
好了,咱们如今在使用 wget -S 来在测试一下测试
wget -S http: //www .php-oa.com /data/emagazine/mode/mode_10 .exe ........ X-Cache: MISS from BM_SC.php-oa.com
解决方法网站
好了,一个高级又快速的解决方法 ,咱们还记的 ICP 吗…是父子模式时用来处理查询 Cache 是否存在的方法 …因此咱们只要实现一个 ICP 协议的查询就好了.这样就能大量查询,状态还会很准…ui
还好,有人写好了现成的 ICP 协议的客户端.下载地址: http://icp.ircache.net/tools/udp-banger.pl
使用很简单,咱们先准备一个要查询的列表,好比,example.txturl
cat example.txt |perl udp-banger.pl xxx.xxx.xxx.x 3130
|
|
这样在标准输出,就会输出相关的内容spa
UDP_MISS http: //www .php-a.com/%C5%F9%F6%A8MIT%28%B5%DA01%BC%AF%29.mp4 UDP_HIT http: //www .php-oa.com/%C5%F9%F6%A8MIT%28%B5%DA01%BC%AF%29.mp4 UDP_MISS http: //www .php-a.com/%C5%F9%F6%A8MIT%28%B5%DA01%BC%AF%29.mp4
|
固然,这个还得对Squid进行适当的配置
icp_port 3130 # 端口 icp_hit_stale off # 过时了,但存在是否还回答为 HIT icp_access allow all # 那些地址能够查询 #icp_access deny all |