背景:
使用squid做代理,一般同时也会缓存一些文件,节约带宽也可以加快访问速度,但是有时候源站的文件更新了,但是由于有缓存,客户端获取到的就还是旧的文件。这时候就要在代理机上清除某些缓存了。
配置:
在squid配置文件中添加以下内容,
[root@localhost ~]# vi /etc/squid/squid.conf
......
acl cachemanager src 192.168.0.1 127.0.0.1
acl Purge method PURGE
http_access allow cachemanager Purge
http_access deny Purge
配置文件定义了cachemanager ,限定本机ip:192.168.0.1及本地换回地址127.0.0.1能执行PURGE操作。
PURGE请求允许用户删除特定缓存,如果成功清除了所请求的 URL,服务器会发送 HTTP 状态码为 200(正常)的响应。如果未缓存所指定的 URL,则会发送 404(未找到)响应。
操作
使用squid自带的squidclient,格式如下,
squidclient -h hostIP -p port -m PURGE URL
其中,-h指定检索的主机,-p为squid开放的端口,-m即为请求方法,删除缓存使用的是PURGE请求,URL即为需要删除的缓存。
例如删除本机上百度的缓存可如下操作,
[root@localhost /home]# squidclient -h 192.168.0.1 -p 80 -m PURGE http://www.baidu.com/
HTTP/1.0 200 OK
..
[root@localhost /home]# squidclient -h 192.168.0.1 -p 80 -m PURGE http://www.baidu.com/
HTTP/1.0 404 Not Found
..
[root@localhost /home]#
连续两次发出PURGE请求,第一次清除成功返回200,第二次由于已经没有该缓存了,因此返回404。