[Brasil-PM] Catalyst e cache

breno breno em rio.pm.org
Quinta Setembro 9 12:19:08 PDT 2010


Não sei se entendi a pergunta... vc quer fazer cache de toda a página,
exceto de um item específico? Ou quer fazer um teste e montar o cache
apenas se determinada condição ocorrer? Ou quer acionar alguma
atividade no backend (digamos, disparar um email ou ativar um worker
ou sei lá) sempre que alguém acertar a página, e servir o que estiver
no cache?

Se for a primeira, acho que não dá. Pelo que entendi, cache é ou tudo
ou nada. Talvez uma solução de Memoize ajude, mas eu ficaria de olho
na memória.

Se for a segunda, cache_hook é exatamente o que vc precisa;

Se for a terceira, usar o 'cache_hook' pode parecer uma opção, mas vc
tem razão em ter dúvidas, já que ela é executada no dispatch e no
finalize. Já que vc quer o PageCache, minha tentativa seria tirar
proveito da integração Catalyst e Moose:

 after 'finalize' => sub {
        my $c = shift;
        # meu código que não faz cache :-)
}

O tipo de modificador (before, after) e a etapa da requisição
(finalize, dispatch, prepare) vai de acordo com o gosto do freguês.

Boa sorte!

[]s

-b
2010/9/9 Eduardo Verissimo <everissimo em gmail.com>:
> Você está falando do cache_hook do módulo PageCache?
>
> Se for, eu tenho minhas dúvidas se é o melhor lugar pra se colocar um código
> como esse, porque ele pode ser executado em dois momentos no mesmo request,
> pelo que pude entender ao ler o código fonte. Posso estar enganado.
>
> No entanto, se estiver falando de usar a action auto, eu já tentei também, e
> não é executada.
>
> Abraço,
>
> Eduardo Veríssimo
>
> Em 9 de setembro de 2010 14:56, Eden Cardim <edencardim em gmail.com> escreveu:
>>
>> >>>>> "Eduardo" == Eduardo Verissimo <everissimo em gmail.com> writes:
>>
>>    Eduardo> Boa tarde.Eu preciso executar um trecho de código quando
>>    Eduardo> houver uma requisição no Catalyst. Tudo muito simples, não
>>    Eduardo> fosse o fato de que quando uso o PageCache, a sequencia
>>    Eduardo> normal de execução é alterada, e todo o código é
>>    Eduardo> ignorado. Há alguma maneira de executar um método mesmo que
>>    Eduardo> a página seja renderizada a partir do cache?
>>
>> A sinopse da documentação tem um exemplo de como fazer isso.
>>
>> --
>>   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
>>  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
>>  Shadowcat Systems Ltd.  Want a managed development or deployment
>> platform?
>> http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/
>> _______________________________________________
>> Brasil-PM mailing list
>> Brasil-PM em pm.org
>> http://mail.pm.org/mailman/listinfo/brasil-pm
>
>
> _______________________________________________
> Brasil-PM mailing list
> Brasil-PM em pm.org
> http://mail.pm.org/mailman/listinfo/brasil-pm
>


Mais detalhes sobre a lista de discussão Brasil-PM