Imagem de fundo

Analise o seguinte trecho de uma aplicação Django, que implementa caching em uma view q...

Compartilhar

Analise o seguinte trecho de uma aplicação Django, que implementa caching em uma view que lista produtos de uma loja on-line. A view requer autenticação e exibe descontos personalizados por usuário. O middleware de caching está configurado corretamente.


Imagem associada para resolução da questão


Qual das alternativas abaixo descreve corretamente o comportamento de caching nesta implementação, considerando múltiplos usuários autenticados acessando a view simultaneamente e possíveis problemas relacionados ao caching do fragmento de template e da view?


A

O caching da view inteira será compartilhado entre todos os usuários autenticados, pois @vary_on_headers(‘Cookie’) não afeta o cache do fragmento de template, que é recalculado dinamicamente por requisição, garantindo que o desconto_personalizado seja único por usuário.


B

O decorator @cache_page será aplicado antes do @login_required, cacheando respostas de redirecionamento (HTTP 302) para usuários não autenticados, o que pode levar a loops de redirecionamento, enquanto o fragmento de template será ignorado devido ao caching da view.


C

O fragmento de template {% cache %} será ignorado porque a view já está cacheada com @cache_page, resultando em um cache global da página renderizada, sem variação por usuário, e o desconto_personalizado será fixo para todos os acessos até a expiração do cache da view.


D

A combinação de @vary_on_ headers(‘Cookie’) e @login_required garante que o cache da view seja único por usuário, mas o fragmento de template, com a chave estática produtos_lista, é cacheado globalmente, incluindo o desconto_personalizado. Isso faz com que todos os usuários vejam o mesmo desconto personalizado do primeiro usuário que gerou o cache do fragmento, até sua expiração.