Squid客户端清除实用程序

时间:2010-01-29 11:25:11

标签: squid

我一直在使用清除工具,即。

squidclient -m PURGE http://www.example.com/

上面的命令将清除该确切的链接,但它会将其中的所有其他内容保留在缓存中。 (eghttp://www.example.com/page1)

我想知道有没有办法清除该网址下的每个文件?

6 个答案:

答案 0 :(得分:3)

我在这条线上的成功有限:

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

答案 1 :(得分:2)

首先,感谢KimVais建议我在服务器故障中提问,我在那里找到了解决方案。

在serverfault中回答:

第三方清除实用程序将完全按照您的要求执行:

purge工具是您的squid-2缓存中的一种放大镜。您可以使用清除来查看缓存中哪个文件存储在哪个文件中。清除工具还可用于释放URL与用户指定的正则表达式匹配的对象。一个更麻烦的功能是能够删除鱿鱼似乎不再了解的文件。

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

purge -c /etc/squid/squid.conf -p localhost:80 -P0 -se'http://www.mysite.com/' -P0将显示URL列表但不删除它们;将其更改为-P1以将PURGE发送到缓存,就像在示例中一样。

答案 2 :(得分:2)

net-purge gem将Net :: HTTP :: Purge添加到ruby中,因此您可以轻松清除缓存。

require 'net-purge'

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

答案 3 :(得分:1)

我想补充说,没有 O(1)方法可以使Squid缓存中的多个对象无效。有关详细信息,请参阅the Squid FAQ

相比之下,Nginx和Apache Traffic Server似乎也缺乏此功能。 OTOH,Varnish实施banning,实际上应该做你想做的事。

答案 4 :(得分: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

答案 5 :(得分: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,然后以正常方式重新加载配置。

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