squid會根據使用者請求網頁的URL進行雜湊,產生快取檔案,存放在某一個目錄中。squid啟動之後,將在記憶體中建立一個雜湊表,記錄硬碟中快取檔案配置的情形。
對於類似http://jb51.net/index.html之類的網頁,squid只會產生一個快取檔案。可以用squid附帶的squidclient工具清除:
squidclient -m PURGE -p 80 “http://jb51.net/index.html”
而對於帶有參數的網頁,例如新浪播客的Flash播放器http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&vid=4469852&uid=1278987704,因”?”後面的參數不同,導致URL也不同,squid會產生多個快取檔案,雜湊分散存放在不同的目錄。如果修改了這個outer_player.swf檔案,要更新squid緩衝就要去清除不同目錄下及記憶體中的很多個快取檔案,十分麻煩,於是我編寫了一個Linux下的shell指令碼,去完成這件麻煩的事:
指令檔名:clear_squid_cache.sh
下載: 複製代碼 代碼如下:clear_squid_cache.sh#!/bin/sh
squidcache_path="/cache/"
squidclient_path="/usr/local/squid/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
注意:請賦予clear_squid_cache.sh可執行許可權(命令:chmod +x ./clear_squid_cache.sh)。請確保指令碼所在目錄可寫。
設定:
squidcache_path= 表示squid緩衝目錄的路徑
squidclient_path= 表示squidclient程式所在的路徑,預設為squid安裝目錄下的bin/squidclient
用法:
1、清除所有Flash緩衝(副檔名.swf):
./clear_squid_cache.sh swf
2、清除URL中包含sina.com.cn的所有緩衝:
./clear_squid_cache.sh jb51.net
3、清除檔案名稱為zhangyan.jpg的所有緩衝:
./clear_squid_cache.sh test.jpg
效率:
經測試,在DELL 2950上清除26000個快取檔案用時2分鐘左右。平均每秒可清除快取檔案177個。