国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
編程方式刷新Squid緩存服務(wù)器的五種方法

網(wǎng)站進(jìn)行內(nèi)容更新是常有的事情,當(dāng)被緩存的資源更新時(shí),前端Squid 緩存服務(wù)器內(nèi)容也必須要相應(yīng)的更新,否則用戶就可能會(huì)看到過(guò)期的數(shù)據(jù)。當(dāng)沒有程序支持時(shí)就需要每次登錄到服務(wù)器上執(zhí)行刷新操作,在服務(wù)器數(shù)量小的的時(shí)候這種方式還可行,如果服務(wù)器數(shù)量上了一定的規(guī)模,這就是一種非常笨重的處理方式,以下分別介紹通過(guò)編程方式實(shí)現(xiàn)刷新 Squid 的三種方法:

 

1.  refresh_pattern 用于配置Squid 的刷新策略,當(dāng) Squid 沒有配置 ignonre-reload 來(lái)忽略客戶端no-cache 和 reload 頭的時(shí)候。

ignore-reload - ignores a client no-cache or reload header. Doing this VIOLATES the HTTP standard. Enabling this feature could make you liable for problems which it causes. (ignore-reload, 忽略客戶端 no-cache 或 reload 頭,這是違反 HTTP 標(biāo)準(zhǔn)的做法,允許此特性可能導(dǎo)致相關(guān)問(wèn)題 . )

 

在這種情況下可以通過(guò)模擬客戶端向服務(wù)器發(fā)送no-cache 頭( ctrl + f5 就完成此功能)來(lái)實(shí)現(xiàn)刷新操作。發(fā)送的請(qǐng)求頭如下:

  1. <?<a );  
  2. ?>   

 

2.  通過(guò)PURGE 頭刷新緩存,這需要 Suqid 配置 ACL 以允許 PURGE 請(qǐng)求頭,實(shí)例如下:

acl AdminBoxes src 127.0.0.1 172.16.0.1 192.168.0.1

acl Purge method PURGE

 

http_access allow AdminBoxes Purge

http_access deny Purge


 

打開配置之后可以使用如下的請(qǐng)求頭來(lái)完成刪除操作

PURGE http://www.squid.org/junk HTTP/1.0
Accept: */* 

上個(gè)例子代碼中,把HEAD 修改為 PURGE 即可,如下:

 

view plaincopy to clipboardprint?
01.$head = "PURGE {$url_component['path']} HTTP/1.1/r/n";  
02.$head .= "Accept: */*/r/n";  
03.$head .= "Host: {$url_component['host']}/r/n";  
04.$head .= "Cache-Control: no-cache/r/n";  
05.$head .= "/r/n"; 
$head = "PURGE {$url_component['path']} HTTP/1.1/r/n";
$head .= "Accept: */*/r/n";
$head .= "Host: {$url_component['host']}/r/n";
$head .= "Cache-Control: no-cache/r/n";
$head .= "/r/n";
 

 

3.  通過(guò)使用多播HTCP 包來(lái)完成 Squid 清理,這是 MediaWiki 目前正在使用的方法,當(dāng)wiki 更新時(shí)用于更新全球的 Squid 緩存服務(wù)器,實(shí)現(xiàn)原理為:發(fā)送 PURGE 請(qǐng)求到特定的多播組,所有 Squid 服務(wù)器通過(guò)訂閱該多播組信息完成刪除操作,這種實(shí)現(xiàn)方式非常高效,避免了 Squid 服務(wù)器處理響應(yīng)和建立 TCP 連接的開銷。參考資料: Multicast HTCP purging  

 

發(fā)送no-cache 頭的方式在很多情況下不適用,因?yàn)榇蠖鄶?shù)站長(zhǎng)都會(huì)配置 ignore-reload 來(lái)阻止 no-cache 和 reload 頭以提高 Squid 的命中率;通過(guò)適當(dāng)?shù)臋?quán)限控制 PURGE 清理將是一種非常簡(jiǎn)單可行的方式,考慮到安全問(wèn)題我們可以僅允許特定的主機(jī)進(jìn)行 PURGE 清理操作,對(duì)第 1 , 2 種方式 進(jìn)行簡(jiǎn)單的變通就可以用于管理較大規(guī)模數(shù)量的前端緩存服務(wù)器 - 我們可以在被允許的主機(jī)上提供一個(gè)專門的后臺(tái)刷新隊(duì)列,這個(gè)刷新隊(duì)列在接收到刷新操作時(shí)就多線程的向前端服務(wù)器發(fā)送刪除指令,這樣就達(dá)到了同步刷新的效果。第3種方式?jīng)]有進(jìn)行過(guò)嘗試,因?yàn)樾枰惭b相應(yīng)的補(bǔ)丁,并進(jìn)行配置,操作成本相對(duì)較高,在服務(wù)器數(shù)量特別巨大的情況下這無(wú)疑是一種非常高效的實(shí)現(xiàn)方式。

4  批量清除Squid緩存的小工具
很實(shí)用的一個(gè)清除squid緩存的小工具:
http://www.wa.apana.org.au/~dean/squidpurge/

wget http://www.wa.apana.org.au/~dean/sources/purge-20040201-src.tar.gz
tar zxvf purge-20040201-src.tar.gz
cd purge
make
[root@cache purge]# ./purge -help
### Use at your own risk! No guarantees whatsoever. You were warned. ###

$Id: purge.cc,v 1.17 2000/09/21 10:59:53 cached Exp $
Usage: purge [-a] [-c cf] [-d l] [-(f|F) fn | -(e|E) re] [-p h[:p]]
[-P #] [-s] [-v] [-C dir [-H]] [-n]

-a display a little rotating thingy to indicate that I am alive (tty only).
-c c squid.conf location, default "/usr/local/squid/etc/squid.conf".
-C dir base directory for content extraction (copy-out mode).
-d l debug level, an or of different debug options.
-e re single regular expression per -e instance (use quotes!).
-E re single case sensitive regular expression like -e.
-f fn name of textfile containing one regular expression per line.
-F fn name of textfile like -f containing case sensitive REs.
-H prepend HTTP reply header to destination files in copy-out mode.
-n do not fork() when using more than one cache_dir.
-p h:p cache runs on host h and optional port p, default is localhost:3128.
-P # if 0, just print matches; otherwise or the following purge modes:
0x01 really send PURGE to the cache.
0x02 remove all caches files reported as 404 (not found).
0x04 remove all weird (inaccessible or too small) cache files.
0 and 1 are recommended - slow rebuild your cache with other modes.
-s show all options after option parsing, but before really starting.
-v show more information about the file, e.g. MD5, timestamps and flags.

1.清除URL中包含jackbillow.com的所有緩存
./purge -p 127.0.0.1:80 -P 1 -se 'jackbillow.com'

2.清除 URL 以“.mp3”結(jié)尾的緩存文件,例如:http://www.dzend.com/abc/test.mp3
./purge -p 127.0.0.1:80 -P 1 -se '/.mp3$'

批量刪除squid緩存腳本

Squidweb緩存加速軟件目前已經(jīng) 是新浪、搜狐、網(wǎng)易等各大網(wǎng)站廣泛應(yīng)用。Squid會(huì)在設(shè)置的緩存目錄下建立多個(gè)目錄,每一個(gè)目錄下又建立多個(gè)目錄,然后才在最里層的目錄中存放緩存文件(object)。squid會(huì)根據(jù)用戶請(qǐng)求網(wǎng)頁(yè)的URL進(jìn)行哈希,生成緩存文件,存放在某一個(gè)目錄中。squid啟動(dòng)之后,將在內(nèi)存中建立一個(gè)哈希表,記錄硬盤中緩存文件配置的情形。

對(duì)于類似http://you.video.sina.com.cn/index.html之類的網(wǎng)頁(yè),squid只會(huì)生成一個(gè)緩存文件。可以用squid附帶的squidclient工具清除:

squidclient -m PURGE -p 80 http://you.video.sina.com.cn/index.html

注意:

Squid接受一種客戶請(qǐng)求方式,用于刪除cache對(duì)象。PURGE方式并非官方HTTP請(qǐng)求方式之一。它與DELETE不同,對(duì)后者, squid將其轉(zhuǎn)發(fā)到原始服務(wù)器。PURGE請(qǐng)求要求squid刪除在uri里提交的目標(biāo)。squid返回200(OK)或404(Not Found)。

PURGE方式某種程度上有點(diǎn)危險(xiǎn),因?yàn)樗鼊h除了cache目標(biāo)。除非你定義了相應(yīng)的ACL,否則squid禁止PURGE方式。正常的,你僅僅允許來(lái)自本機(jī)和少數(shù)可信任主機(jī)的PURGE請(qǐng)求。配置看起來(lái)如下:

acl AdminBoxes src 127.0.0.1 172.16.0.1 192.168.0.1

acl Purge method PURGE

http_access allow AdminBoxes Purge

http_access deny Purge

而對(duì)于帶有參數(shù)的網(wǎng)頁(yè),例如新浪播客的Flash播放器http: //vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&vid=4469852& uid=1278987704,因“?”后面的參數(shù)不同,導(dǎo)致URL也不同,squid會(huì)生成多個(gè)緩存文件,哈希分散存放在不同的目錄。如果修改了這個(gè) outer_player.swf文件,要更新squid緩存就要去清除不同目錄下及內(nèi)存中的很多個(gè)緩存文件,十分麻煩,于是我編寫了一個(gè)Linux下的 shell腳本,去完成這件麻煩的事:

  腳本文件名:clear_squid_cache.sh

  #!/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

注意: 請(qǐng)賦予clear_squid_cache.sh可執(zhí)行權(quán)限(命令:chmod +x ./clear_squid_cache.sh)。請(qǐng)確保腳本所在目錄可寫。

  設(shè)置:

  squidcache_path= 表示squid緩存目錄的路徑

  squidclient_path= 表示squidclient程序所在的路徑,默認(rèn)為squid安裝目錄下的bin/squidclient

用法:

  1、清除所有Flash緩存(擴(kuò)展名.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

效率:

經(jīng)測(cè)試,在DELL 2950上清除26000個(gè)緩存文件用時(shí)2分鐘左右。平均每秒可清除緩存文件177個(gè)。

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用Nginx的proxy
使用Varnish代替Squid做網(wǎng)站緩存加速器的詳細(xì)解決方案
FreeBSD下Squid安裝步驟
squid優(yōu)化記及nginx正向代理的缺點(diǎn)
清除指定Squid緩存文件的腳本
Linux上squid服務(wù)的配置
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服