q968 发表于 2018-12-27 10:16:44

squid缓存批量更新

  squid的缓存批量更新问题,因代理上有很多的域名,部分客户的网站如图片等会经常更新,要求又比较紧急,所以写了个自动清除缓存的脚本,后来网上也搜查了个,感觉还是别人的写的比较好,这里我把自己写的跟别人写的都记录下,方便以后查看。
  我个人写的clear_squidcache.sh


[*]#!/bin/bash
[*]#clear_squidcache.sh
[*]FILE="/tmp/123.txt"      #这里的123.txt中是存放更新文件的完整url路径。
[*]cat $FILE |while read line
[*]       do
[*]         /usr/local/squid/bin/squidclient -l 127.0.0.1 -p 80 -m PURGE $line >/dev/null 2>&1
[*]       done
rm -f /tmp/123.txt

  在网上找到高手写的:


[*]#!/bin/sh
[*]
[*]squidcache_path1="/data/cache1"# Squid 的缓存目录
[*]squidcache_path2="/data/cache2"
[*]squidclient_path="/usr/local/squid/bin/squidclient"# squidclient 的路径
[*]
[*]grep -a -r $1 $squidcache_path1/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > /tmp/cache_list.txt
[*]grep -a -r $1 $squidcache_path2/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' >> /tmp/cache_list.txt
[*]
[*]cat cache_list.txt |while read url; do
[*]$squidclient_path -l 127.0.0.1 -m PURGE -p 80 $url   # 80 端口根据你squid的http 设置自行修改
[*]done
rm -f /tmp/cache_list.txt


  这个是我稍微修改过的,功能相对我个人写的要强大多了,可以拿来借鉴学习。用法也比较简单,保存脚本为clear_squid_cache.sh,赋予执行权限。
执行清除域名缓存:./clear_squid_cache.sh www.baidu.com
      清除后缀缓存:./clear_squid_cache.sh jpg
       清除特定文件缓存:./clear_squid_cache.sh 123.jpg
    后续再研究研究,看看是否有更好的办法,或者再对脚本进行优化优化。



页: [1]
查看完整版本: squid缓存批量更新