Varnishのcacheをpurgeする
いくつかの方法がある
全てのcacheをpurgeする
varnishをreloadするコマンドを実行すればいい
コマンドは環境によって異なる
$ systemctl restart varnish
$ service varnish restart
特定の1つのURLをpurgeする
事前準備
code:default.vcl
acl purge {
"localhost";
"127.0.0.1";
}
PURGEを送れるIPアドレスを制限しておく
ちなみにこのpurgeは予約語ではないmrsekut.icon
purge用の実装を定義しておく
code:default.vcl
sub vcl_recv {
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}
}
aclで指定した環境の中で以下を実行
参考
2と8に書いている
参考
docs
versionが明記されていないが、恐らく内容がかなり古い
ban()を使う
対象のものがban listに追加される
この時点ではメモリ内に残っている
次にrequestを送った時は、originから取得される
$ varnishadm ban req.http.host == example.com '&&' req.url '~' '\\.png$'
varnishadm> ban.listで確認できる
古い
古い
forced cache miss
cache内のobjectをrequest時のものに更新する
3種類あるけど何が違うねん
example.com/v2/*みたいな感じで指定してpurgeしたい