2010-01-29 62 views
4

我一直在使用清除工具即。鱿鱼客户端清除工具

squidclient -m吹扫http://www.mysite.com/

上面的命令将清除,准确的链接,但它留下一切在它在缓存中。 (eghttp://www.mysite.com/page1)

我想知道是否有一种方法来清除该网址下的每个文件?

由于提前 露丝

+0

Ypu应该在serverfault.com上问这个问题或许 – Kimvais

+0

谢谢我会尝试 – Ruth

回答

2

首先感谢您对KimVais建议我问serverfault,我已经找到了解决办法在那里。

的回答serverfault:

的第三方清除工具将不正是你所追求的:

purge工具是一种放大镜到你的鱿鱼-2高速缓存。您可以使用清除来查看哪些URL存储在缓存中的哪个文件中。清除工具也可用于释放URL匹配用户指定正则表达式的对象。一个更麻烦的功能是去除文件鱿鱼似乎不再知道的能力。

对于我们加速(反向)代理,我用这样的配置:

净化-c /etc/squid/squid.conf中-p本地主机:80 -P0 -se 'http://www.mysite.com/' -P0会显示URL列表但不删除它们;将其更改为-P1以将PURGE发送到缓存,如同您在示例中所做的一样。

2

我已经有限的成功,这条线搞乱:

awk '{print $7}' /var/log/squid/access.log | grep www.example.com | sort | uniq | xargs -n 1 squidclient -m PURGE -s 
2

net-purge gem增加的Net :: HTTP ::清除至红宝石,所以你可以很容易地清除缓存。

require 'net-purge' 

Net::HTTP.start('417east.com') {|http| 
    request = Net::HTTP::Purge.new('/') 
    response = http.request(request) 
    puts response.body # Guru Meditation 
} 
0

我们有很多方法来清除。例2点的方法,我送花儿给人使用:

随着使用的MacOS或Linux客户端:

curl -X PURGE http://URL.of.Site/ABC.txt

在服务器上直接被运行中的squid:

squidclient -m PURGE http://URL.of.Site/ABC.txt

当然,squid.conf中必须添加

acl Purge method PURGE 
http_access allow localhost Purge 
http_access allow localnet Purge 
http_access deny Purge
0

我想补充一点,没有O(1)在Squid缓存中使多个对象无效。详情请参阅the Squid FAQ

为了便于比较,Nginx和Apache Traffic Server似乎也缺少这个功能。 OTOH,清漆实施banning,在实践中应该做你想做的。

0

Apache Traffic Server v6.0.0增加了一个“缓存生成ID”,可以根据重映射规则设置。因此,您可以根本无需任何费用就可以有效地清除整个“网站”,除了使旧版本无法使用之外,它实际上不会做任何其他操作。

这对ATS缓存很有效,因为它是一个循环缓存(我们称之为旋风缓存),对象从不会被主动删除,只是“丢失”。

使用这个新选项是相当直接的,例如,

map http://example.com http://real.example.com \ 
    @plugin=conf_remap.so \ 
    proxy.config.http.cache.generation=1 

即刻(零成本)吹扫example.com所有缓存的条目,只需凸点生成ID为2,并重新加载配置以正常的方式。

我也应该说,编写一个插件,从其他(外部)来源加载这些生成ID,而不是我们的remap.config,将会非常容易。