Limpeza de verniz no POST ou PUT

3

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);
    }
}
    
por Martin 18.06.2012 / 17:48

1 resposta

1

veja isto ..

link

basicamente você está fazendo uma pesquisa sobre o que você quer passar ... depois para a eliminação no hit / miss

    
por 18.06.2012 / 18:02