Varnishのcacheをpurgeする
いくつかの方法がある
全てのcacheをpurgeする
varnishをreloadするコマンドを実行すればいい
コマンドは環境によって異なる
$ systemctl restart varnish
$ service varnish restart
特定の1つのURLをpurgeする
事前準備
PURGEを送れるIPアドレスを制限しておく
ちなみにこの
purge
は予約語ではない

purge用の実装を定義しておく
default.vclsub vcl_recv {
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}
}
aclで指定した環境の中で以下を実行
$ curl -X PURGE https://example.com/hoge
参考
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したい