Pode envernizar arquivos em cache sem extensão específica ou residindo em um diretório específico

4

Eu tenho uma instalação de verniz para armazenar em cache (MUITO) as imagens que meu serviço serve. São cerca de 200 imagens de cerca de 4k por segundo e o verniz serve de acordo com a seguinte regra:

if (req.request == "GET" && req.url ~ "\.(css|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") {
            remove req.http.cookie;
            return(lookup);
    }

Agora, o fato é que recentemente adicionei outro serviço no mesmo servidor que cria miniaturas para exibição, mas não adiciona uma extensão específica. Os arquivos são do seguinte padrão de nome de arquivo:

http://www.example.com/thumbnails/date-of-thumbnail/xxxxxxxxx.xx

em que xx são números, então xxxxxxxxx.xx poderia ser 6482364283.73 (dois números no final) (na verdade, esse é o registro de data e hora para que eu possa manter informações extras no nome do arquivo)

Isso tem o efeito colateral que o verniz não armazena em cache e eu os vejo sendo constantemente servidos pelo próprio apache.

Embora eu possa alterar o formato de agora em diante para criar miniaturas que terminem em .jpg , existe uma maneira de alterar o arquivo vcl do meu daemon de verniz para armazenar tudo em um diretório (o diretório thumbnails ) ou tudo com dois números em sua extensão?

Deixe-me saber se posso fornecer informações adicionais!

Obrigado!

    
por pataroulis 03.08.2012 / 12:27

2 respostas

3

Uma ligeira modificação na sua regra existente fará o seguinte:

if (req.request == "GET" && req.url ~ "^/thumbnails/") {
        remove req.http.cookie;
        return(lookup);
}

Ou você pode fazer o regex \.\d{2}$ se quiser armazenar tudo em cache com dois dígitos.

    
por 03.08.2012 / 12:46
1

Pense que é mais fácil ir com o diretório de miniaturas correspondentes.

req.url ~ "\thumbnails\?.*" deve estar bem perto.

Eu recomendo que você leia mais sobre expressões regulares e vernizes.

por 03.08.2012 / 12:44