清除指定squid快取檔案的指令碼代碼分享

來源:互聯網
上載者:User

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個。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.