linux下清除Squid緩存的方法記錄


 

在日常運維工作中,只要用到squid緩存服務,就會常常被要求清理squid緩存。
比如公司領導要求刪一篇新聞,新聞是生成的靜態。運維人員把服務器上靜態的新聞頁面刪除了后,不料代理服務器上緩存還有。
緩存服務器如果用的是suqid,下面就對清理squid緩存的方法做一梳理:


(1)首先在squid的主配置文件中添加acl 列表,並允許受信任的主機有權限清除緩存。
[root@hqtime ~]# 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@hqtime ~]# /usr/bin/squidclient -h 192.168.1.145 -p 80 -m PURGE http://www.linuxidc.com/404.html
或者
[root@hqtime ~]# /usr/bin/squidclient -p 80 -m PURGE http://www.linuxidc.com/404.html
-------------------------------------------------------
獲取所有緩存 *.jpg 的信息
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:objects | grep jpg

取得squid運行狀態信息
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:info

取得squid內存使用情況
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:mem

取得squid已經緩存的列表(小心使用此命令 可能導致崩潰):
[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:objects

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

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


(3)通過腳本刪除
比如編寫刪除squid緩存的腳本clear_squid_cache.sh,如下:
[root@hqtime ~]# 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@hqtime ~]# chmod 755 clear_squid_cache.sh #賦予腳本可執行權限

注意:腳本中的下面兩個設置:
squidcache_path= 表示squid緩存目錄的路徑,這個在squid.conf配置文件中可以查到
squidclient_path= 表示squidclient程序所在的路徑,默認為squid安裝目錄下的bin/squidclient
-p 是指定squid 監聽的端口

用法:
清除所有Flash緩存(擴展名.swf):
[root@hqtime ~]# sh clear_squid_cache.sh swf

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

清除文件名為huanqiu.jpg的所有緩存:
[root@hqtime ~]# sh clear_squid_cache.sh huanqiu.jpg

如果對於頻繁更新的gif或者什么,可以在crontab中添加對應的命令行
假設上述腳本在/root目錄下。如下:
[root@hqtime ~]# 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@hqtime ~]# rm -rf /data1/squid/var/cache

[root@hqtime ~]# squid -z

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

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM