阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下清除Squid缓存的方法记录

203次阅读
没有评论

共计 2899 个字符,预计需要花费 8 分钟才能阅读完成。

在日常运维工作中,只要用到 squid 缓存服务,就会常常被要求清理 squid 缓存。
比如公司领导要求删一篇新闻,新闻是生成的静态。运维人员把服务器上静态的新闻页面删除了后,不料代理服务器上缓存还有。
缓存服务器如果用的是 suqid,下面就对清理 squid 缓存的方法做一梳理:

(1)首先在 squid 的主配置文件中添加 acl 列表,并允许受信任的主机有权限清除缓存。
[root@linuxidc~]# vim /etc/squid/squid.conf
…….
…….
acl managercache src 192.168.1.145 127.0.0.1
acl Purge method PURGE
http_access allow managercache Purge
http_access deny Purge

(2)使用 squid 自带命令 squidclient
如下清除 squid 中一条缓存,- h 是受信任清理缓存的服务器 ip,-p 是指定的 squid 端口
[root@linuxidc~]# /usr/bin/squidclient -h 192.168.1.145 -p 80 -m PURGE http://www.linuxidc.com/404.html
或者
[root@linuxidc~]# /usr/bin/squidclient -p 80 -m PURGE http://www.linuxidc.com/404.html
——————————————————-
获取所有缓存 *.jpg 的信息
[root@linuxidc~]# /usr/bin/squidclient -p 80 mgr:objects | grep jpg

取得 squid 运行状态信息
[root@linuxidc~]# /usr/bin/squidclient -p 80 mgr:info

取得 squid 内存使用情况
[root@linuxidc~]# /usr/bin/squidclient -p 80 mgr:mem

取得 squid 已经缓存的列表(小心使用此命令 可能导致崩溃):
[root@linuxidc~]# /usr/bin/squidclient -p 80 mgr:objects

取得 squid 的磁盘使用情况:
[root@linuxidc~]# /usr/bin/squidclient -p 80 mgr:diskd

强制更新某个 url:
[root@linuxidc~]# /usr/bin/squidclient -p 80 -m PURGE http://www.yejr.com/static.php
——————————————————-

(3)通过脚本删除
比如编写删除 squid 缓存的脚本 clear_squid_cache.sh,如下:
[root@linuxidc~]# vim clear_squid_cache.sh
#!/bin/sh
squidcache_path=”/data1/squid/var/cache”
squidclient_path=”/usr/bin/squidclient”
grep -a -r $1 $squidcache_path/* | strings | grep “http:” | awk -F’http:’ ‘{print “http:”$2;}’ > cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 80 $url
done

[root@linuxidc~]# chmod 755 clear_squid_cache.sh #赋予脚本可执行权限

注意:脚本中的下面两个设置:
squidcache_path= 表示 squid 缓存目录的路径,这个在 squid.conf 配置文件中可以查到
squidclient_path= 表示 squidclient 程序所在的路径,默认为 squid 安装目录下的 bin/squidclient
-p 是指定 squid 监听的端口

用法:
清除所有 Flash 缓存(扩展名.swf):
[root@linuxidc~]# sh clear_squid_cache.sh swf

清除 URL 中包含 sina.com.cn 的所有缓存:
[root@linuxidc~]# sh clear_squid_cache.sh sina.com.cn

清除文件名为 huanqiu.jpg 的所有缓存:
[root@linuxidc~]# sh clear_squid_cache.sh huanqiu.jpg

如果对于频繁更新的 gif 或者什么,可以在 crontab 中添加对应的命令行
假设上述脚本在 /root 目录下。如下:
[root@linuxidc~]# crontab -e
0 * * * * /bin/bash /root/clear_squid_cache.sh gif &
这样就会每隔一个小时进行一次刷新操作了,很是方便
如果需要让图片更新人员自行刷新的话,就可以找相应的人员开发 web 页面,进行对脚本的调用就可以了

脚本效率:
经测试,此脚本清除 26000 个缓存文件用时 2 分钟左右,平均每秒可清除缓存文件 177 个。

(4)还有一种方法,直接删除 squid 的缓存目录,这样就删除了 squid 的全部缓存了!
然后重新创建同名空目录做为缓存目录,接着 squid -z 重新初始化,最后重启 squid 即可!

查看 squid.conf 配置文件,比如缓存目录是 /data1/squid/var/cache(cache_dir 后面设置的)
[root@linuxidc~]# rm -rf /data1/squid/var/cache

[root@linuxidc~]# squid -z

[root@linuxidc~]# /etc/init.d/squid restart

配置 Squid 代理 http 和 rsync http://www.linuxidc.com/Linux/2013-05/84642.htm

Squid:实现高速的 Web 访问 http://www.linuxidc.com/Linux/2013-04/83512.htm

CentOS 6.2 编译安装 Squid 配置反向代理服务器 http://www.linuxidc.com/Linux/2012-11/74529.htm

简单配置 Squid 代理和反向代理 http://www.linuxidc.com/Linux/2014-04/99465.htm

Squid 代理服务器搭建及配置 http://www.linuxidc.com/Linux/2016-03/129392.htm

CentOS 6.4 下 DNS+Squid+Nginx+MySQL 搭建高可用 Web 服务器 http://www.linuxidc.com/Linux/2014-04/99984.htm

Squid 的详细介绍:请点这里
Squid 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136593.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2899字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中