veja isto ..
basicamente você está fazendo uma pesquisa sobre o que você quer passar ... depois para a eliminação no hit / miss
Na minha pilha de aplicativos, estou usando o CouchDB (neste cenário, para todos os efeitos, é um servidor REST simples) e quero colocar o Varnish na frente para aliviar a carga de leitura.
Eu sei que sempre que meu aplicativo atualiza um documento através de POST ou PUT que o documento antigo é invalidado mas, devido aos cabeçalhos que o CouchDB coloca, o Varnish não percebe isso e assim continua a servir o antigo versão para pedidos subsequentes de GET .
Basicamente, gostaria de poder purge o documento em um determinado URL REST quando um método POST ou PUT for enviado para o mesmo URL.
Posso configurar o Varnish para conseguir isso?
Eu poderia fazer com que meu aplicativo enviasse uma solicitação PURGE após cada POST ou PUT , mas eu realmente preferiria que o cache ficasse invisível para o aplicativo, pois, para instalações menores, ele poderia ser executado sem verniz no lugar.
Basicamente, em vcl , gostaria de fazer isso:
sub vcl_recv {
if ( req.request == "POST" || req.request == "PUT" ) {
purge;
return(pass);
}
}
Mas o método purge; não está disponível em vcl_recv
Atualizar
Parece que consegui algo semelhante ao acima, usando ban em vez de purge - a solicitação imediatamente subsequente para as solicitações POST aciona GET e mais GET é enviada do cache, portanto parece que eu entendi errado a semântica.
Minha sub-rotina está atualmente:
sub vcl_recv {
if ( req.request == "POST" || req.request == "PUT" ) {
ban("req.url == " + req.url);
return(pass);
}
}
veja isto ..
basicamente você está fazendo uma pesquisa sobre o que você quer passar ... depois para a eliminação no hit / miss