Eu tenho o verniz 3.0.5 instalado e em execução, conectando-me a um back-end do Plone 4. Minhas solicitações são armazenadas em cache, mas não são limpas de forma confiável, na verdade somente após a expiração do ttl.
O plone.app.caching é o addon, que envia um pedido de limpeza, toda vez que um objeto é modificado. Este é o vernizlog:
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
Dentro de default.vcl eu configurei purgadores acl, funções básicas vcl_hit e vcl_miss, e dentro de vcl_recv eu tenho:
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "This IP is not allowed to send purge requests.";
}
return (lookup);
}
Quando abro a imagem após a limpeza, ainda obtenho a versão antiga, até que a idade máxima tenha expirado.
Esta é a saída de log encurtada:
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
O que eu fiz até agora é reescrever o valor de hash da solicitação, para corresponder ao hash da solicitação de eliminação. Eles são idênticos, mas meu objeto não é purgado e não consigo descobrir por quê? É porque o host solicitante muda?
Fico feliz com as dicas!