前回は ウェブキャッシュサーバnuster入門-1(基本) でnusterを簡単に紹介しました。その後いろいろなPurge機能を追加したので、今回はPurgeについて紹介したいと思います。
仕様は変更されるかもしれないので、最新のものはhttps://github.com/jiangwenyuan/nuster/blob/master/README.md を参照してください。
Purge Cache
いくつかの方法でPurgeできます。Purge機能はディフォルトでOffなので、Onにする必要があります。
Purgeを有効にする
global
セクションで nuster cache on uri /nuster/cache
のようにPurge用のuriを設定することでPurgeを有効にします。uriはなんでもいいです。
そしてディフォルトのPurgeメソッドはPURGE
ですが、purge-method MYPURGE
で別のメソッドも設定できます。
基本の使い方
curl -X PURGE http://127.0.0.1/URI
URIは基本先設定した /nuster/cache
で、唯一の例外は1つURLをPurgeするとき、そのURLを使います。
1つURLをPurge
curl -XPURGE https://127.0.0.1/imgs/test.jpg
GET /imgs/test.jpg
で生成したキャッシュをPurgeする、HEADERなどは問いません。
nameでPurge
nuster-ruleのname、proxyのname、もしくは*
でPurgeできます。
headers
header | value | description |
---|---|---|
name | nuster-rule NAME | nuster-rule ${NAME} で生成したキャッシュをPurge |
proxy NAME | proxy ${NAME}のキャッシュをPurge | |
* | すべてのキャッシュをPurge |
Examples
# すべてのキャッシュをPurge
curl -X PURGE -H "name: *" http://127.0.0.1/nuster/cache
# proxy app1bのすべてのキャッシュをPurge
curl -X PURGE -H "name: app1b" http://127.0.0.1/nuster/cache
# nuster-rule r1が生成したキャッシュをすべてPurgeする
# つまり /imgs/* のキャッシュをすべてPurgeする
# nuster-rule r1 imgs if { path_beg /imgs/ }
curl -X PURGE -H "name: r1" http://127.0.0.1/nuster/cache
HostでPurge
そのHostのすべてのキャッシュをPurgeできます。
headers
header | value | description |
---|---|---|
x-host | HOST | the ${HOST} |
Examples
# 127.0.0.1:8080のすべてのキャッシュをPurge
curl -X PURGE -H "x-host: 127.0.0.1:8080" http://127.0.0.1/nuster/cache
pathでPurge
ディフォルトで同じpathでもqueryが違うなら、生成したキャッシュも違います。
例えば nuster-rule imgs if { path_beg /imgs/ }
,そして
curl https://127.0.0.1/imgs/test.jpg?w=120&h=120
curl https://127.0.0.1/imgs/test.jpg?w=180&h=180
すると、2つのキャッシュが生成されます。
pathでpurge以外は、いくつかの方法でPurgeできます
一つずつ
curl -XPURGE https://127.0.0.1/imgs/test.jpg?w=120&h=120
curl -XPURGE https://127.0.0.1/imgs/test.jpg?w=180&h=180
でもqueryがわからない場合はできません。
もしqueryが重要ではないなら、カスタマイズのkeyを使う
nuster-rule imgs key method.scheme.host.path if { path_beg /imgs }
,すると1つのキャッシュしか生成されません。そして、queryなしでpurgeできます。
curl -XPURGE https://127.0.0.1/imgs/test.jpg
でもqueryが重要の場合はできません。
cache-ruleでpurge
curl -X PURGE -H "name: imgs" http://127.0.0.1/nuster/cache
すると、 /imgs/test.jpg
だけでなく、他の /imgs/*
もPurgeされます。
なので、pathでPurge
headers
header | value | description |
---|---|---|
path | PATH | pathが${PATH}のキャッシュをpurge |
x-host | HOST | そして host が ${HOST} |
Examples
# pathが/imgs/test.jpg のキャッシュをPurge
curl -X PURGE -H "path: /imgs/test.jpg" http://127.0.0.1/nuster/cache
# pathが/imgs/test.jpgで hostが127.0.0.1:8080のキャッシュをPurge
curl -X PURGE -H "path: /imgs/test.jpg" -H "x-host: 127.0.0.1:8080" http://127.0.0.1/nuster/cache
regexでPurge
headers
header | value | description |
---|---|---|
regex | REGEX | pathが${REGEX} matchならPurge |
x-host | HOST | そして host が ${HOST} |
Examples
# /img下の.jpgファイルのキャッシュをPurge
curl -X PURGE -H "regex: ^/imgs/.*\.jpg$" http://127.0.0.1/nuster/cache
#/img下の.jpgファイルかつHostが 127.0.0.1:8080のキャッシュをPurge
curl -X PURGE -H "regex: ^/imgs/.*\.jpg$" -H "127.0.0.1:8080" http://127.0.0.1/nuster/cache