IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Cache 文件是否存在的查询

扶凯 2010-11-17 19:16:59 累计浏览 3,572 次
本机暂存

  当我们使用 Squid 是不是常常会有个问题,就是怎么查文件是否存在。大家是怎么查的。。。我想大多都是使用 wget 来查。wget -S 如果显示 HIT 就是文件从 Cache 中取的,不是从源网站取的。但这个过程非常慢,因为如果是大量的文件,比如 100W 的文件要查怎么办。。。都下载一次?
有人就讲了,我不是可以发 Head 的头来查吗?比如使用 Curl 来查。这样没有下载文件的过程,这样多快啊。。。,只要发送一个 head 的头就能确认文件是否存在
但这时有一个问题,那我们在看看有什么样的问题。

1.  当文件不存在时首次查询 Squid

很好,正常,文件不存在时就显示 MISS ,这是对的

#curl -I http://www.php-oa.com/data/emagazine/mode/mode_10.exe
 
........
X-Cache: MISS from BM_SC.php-oa.com

2. 上次查询后在次查询 Squid
嗯,很好,不存在。。。。我们在查一次,使用上面的命令,就发现,嗯,文件存在了,由 MISS 变成了 HIT 。。。。

#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

 怎么回事,明明查了有,怎么是 MISS .其实这是对的,因为 curl 加 I 的参数,只发了一个 head ,Squid 会给这个 head 来做 cache ,但对对象不会下载。所以第一次查的状态是对的。以后都会是错的响应。

解决方法

好了,一个高级又快速的解决方法 ,我们还记的 ICP 吗。。。是父子模式时用来处理查询 Cache 是否存在的方法 。。。所以我们只要实现一个 ICP 协议的查询就行了。这样就能大量查询,状态还会很准。。。

还好,有人写好了现成的 ICP 协议的客户端。下载地址: http://icp.ircache.net/tools/udp-banger.pl
使用很简单,我们先准备一个要查询的列表,比如,example.txt

#cat example.tst |perl udp-banger.pl xxx.xxx.xxx.x 3130

这样在标准输出,就会输出相关的内容

UDP_MISS http://www.php-oa.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-oa.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

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. WEB系统需要关注的一些点 (累计阅读 18,218)
  2. 浅析http协议、cookies和session机制、浏览器缓存 (累计阅读 17,446)
  3. 淘宝图片存储架构 (累计阅读 10,960)
  4. 使用Squid缓存视频 (累计阅读 10,339)
  5. 大并发下的高性能编程 – 改进的(用户态)自旋锁 (累计阅读 9,042)
  6. 大型高并发高负载网站的系统架构分析 (累计阅读 9,004)
  7. 低成本和高性能MySQL云数据的架构探索 (累计阅读 8,582)
  8. TT的作者出新作品鸟:kyoto tycoon (累计阅读 7,953)
  9. Buffer和cache的区别是什么? (累计阅读 7,939)
  10. top使用技巧 (累计阅读 7,912)