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 1squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt
for url in `cat cache_list.txt`; do
squidclientpathmPURGEp80url
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

 


***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
分类:  Squid
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/5991582.html ,如需转载请自行联系原作者
目录
打赏
0
0
0
0
66
分享
相关文章
|
4月前
|
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
373 78
|
3月前
|
springboot怎么使用rides缓存方法的返回值 完整例子
通过上述步骤,我们成功地在 Spring Boot 项目中集成了 Redis 缓存,并通过注解的方式实现了方法返回值的缓存。这种方式不仅提高了系统的性能,还简化了缓存管理的复杂度。使用 Spring Boot 的缓存注解和 Redis,可以轻松地实现高效、可靠的缓存机制。
95 23
|
6月前
|
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
191 15
Android 系统缓存扫描与清理方法分析
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
119 10
|
5月前
|
Redis 缓存穿透的检测方法与分析
【10月更文挑战第23天】通过以上对 Redis 缓存穿透检测方法的深入探讨,我们对如何及时发现和处理这一问题有了更全面的认识。在实际应用中,我们需要综合运用多种检测手段,并结合业务场景和实际情况进行分析,以确保能够准确、及时地检测到缓存穿透现象,并采取有效的措施加以解决。同时,要不断优化和改进检测方法,提高检测的准确性和效率,为系统的稳定运行提供有力保障。
107 5
|
6月前
|
解决Redis缓存雪崩问题的有效方法
解决Redis缓存雪崩问题的有效方法
103 1
|
7月前
|
解决Redis缓存击穿问题的技术方法
解决Redis缓存击穿问题的技术方法
122 2
|
7月前
|
解决 Redis 缓存穿透问题的有效方法
解决 Redis 缓存穿透问题的有效方法
83 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等