squid清理緩存

Squid web緩存加速軟件目前已經是新浪、搜狐、網易等各大網站廣泛應用。Squid會在設置的緩存目錄下建立多個目錄,每一個目錄下又建立多個目錄,然後纔在最裏層的目錄中存放緩存文件(object)。squid會根據用戶請求網頁的URL進行哈希,生成緩存文件,存放在某一個目錄中。squid啓動之後,將在內存中建立一個哈希表,記錄硬盤中緩存文件配置的情形。

  對於類似http://you.video.sina.com.cn/index.html之類的網頁,squid只會生成一個緩存文件。可以用squid附帶的squidclient工具清除:
 

引用
squidclient -m PURGE -p 80 "http://you.video.sina.com.cn/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(8月2日修正了UC網友“城市中的寂寞”反饋的BUG)
 

引用
#!/bin/sh
squidcache_path="/data1/squid/var/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 sina.com.cn

  3、清除文件名爲zhangyan.jpg的所有緩存:
  ./clear_squid_cache.sh zhangyan.jpg

  效率:
  經測試,在DELL 2950上清除26000個緩存文件用時2分鐘左右。平均每秒可清除緩存文件177個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章