技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Apache --> Cache 文件是否存在的查询

Cache 文件是否存在的查询

浏览:2546次  出处信息

  当我们使用 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. 使用Squid缓存视频    (阅读:9162)
  2. 海量小文件存储    (阅读:7540)
  3. 其实,文件也可以truncate    (阅读:7382)
  4. Buffer和cache的区别是什么?    (阅读:6822)
  5. 谈冷热数据    (阅读:5731)
  6. 系统架构的一些思考    (阅读:5590)
  7. Linux操作系统中内存buffer和cache的区别    (阅读:5305)
  8. 学习:一个并发的Cache    (阅读:4967)
  9. 关于Linux的文件系统cache    (阅读:4773)
  10. Twitter架构图(cache篇)    (阅读:4719)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1