ワニス3.0.5を稼働させ、Plone4バックエンドに接続しています。私のリクエストはキャッシュされますが、実際にはttlの有効期限が切れた後にのみ、確実にパージされません。 plone.app.cachingは、オブジェクトが変更されるたびにパージ要求を送信するアドオンです。これはvarnishlogです:
14 BackendOpen b backend_0 127.0.0.1 54428 127.0.0.1 9088
14 BackendXID b 1585950387
14 TxRequest b PURGE
14 TxURL b /VirtualHostBase/https/example.com/path/VirtualHostRoot/pic/a.jpg
14 TxProtocol b HTTP/1.1
14 TxHeader b Host: localhost:9081
14 TxHeader b X-Varnish: 1585950387
14 BackendClose b backend_0
13 ReqStart c 127.0.0.1 56614 1585950387
13 RxRequest c PURGE
13 RxURL c /VirtualHostBase/https/example.com/path/VirtualHostRoot/pic/a.jpg
13 RxProtocol c HTTP/1.1
13 RxHeader c Host: localhost:9081
13 VCL_call c recv pipe
13 VCL_call c hash
13 Hash c /VirtualHostBase/https/example.com/path/VirtualHostRoot/pic/a.jpg
13 VCL_return c hash
13 VCL_call c pipe pipe
13 Backend c 14 backend_0 backend_0
13 ReqEnd c 1585950387 1412603444.714001656 1412603505.824758053 0.000071526 0.000180483 61.110575914
Default.vcl内で、aclパージャー、基本的なvcl_hitおよびvcl_miss関数を構成し、vcl_recv内で次のように構成しました。
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "This IP is not allowed to send purge requests.";
}
return (lookup);
}
パージ後に画像を開くと、最大有効期限が切れるまで古いバージョンが表示されます。これは短縮されたログ出力です。
3 RxURL c /VirtualHostBase/https/example.com:443/path/VirtualHostRoot/pic/a.jpg
3 RxProtocol c HTTP/1.0
3 RxHeader c Host: enertour.bz.it
3 VCL_call c recv lookup
3 VCL_call c hash
3 Hash c /VirtualHostBase/https/example.com/path/VirtualHostRoot/pic/a.jpg
3 VCL_return c hash
3 Hit c 1585950403
3 VCL_call c hit deliver
3 VCL_call c deliver deliver
3 TxHeader c Cache-Control: max-age=0, s-maxage=240, must-revalidate
3 TxHeader c X-Cache-Rule: plone.content.file
3 TxHeader c Age: 181
これまで私が行ったことは、パージ要求のハッシュと一致するように、要求のハッシュ値を書き換えることです。それらは同一ですが、オブジェクトがパージされておらず、理由がわかりません。要求しているホストが変更されたためですか?
ヒントがあれば嬉しいです!
今日のvclをもう一度見てみると、変更中に、リクエストタイプをチェックする行の下にパージ機能が滑り込んでいることがわかりました。したがって、パージは許可されず、パイプで終了しました。正しい順序は次のとおりです。
if (req.request == PURGE) {
...
return (lookup);
}
if (req.request != "(GET|HEAD)" {
...
return (pass);
}