Pergunta

Eu tenho uma pergunta relacionada com técnicas de invalidação de cache ... Eu estou tentando implementar um mecanismo para o meu site, que invalida automaticamente cache do navegador (css, imagens ...). Eu quero ser capaz de cache do navegador programaticamente invalidar, sempre que eu atualizar o site (imagens ou estilos da mudança);

Por exemplo: para a versão atual, entre outros, o CSS e algumas das imagens mudaram. Nesta situação eu quero que após a atualização for concluída, quando um usuário executa uma solicitação para o site, o cache do seu navegador para obter automaticamente invalidado, forçando assim a re-download das novas imagens e estilos. Isto deve ser feito apenas para o primeiro pedido do cliente ... os seguintes devem ser recuperadas a partir do cache (para definir o no-cache pragma está fora de questão).

Aqui está o que eu tentei: no manipulador de eventos BeginRequest, eu adicionei as seguintes linhas: Response.Cache.SetCacheability (HttpCacheability.ServerAndPrivate); Response.Cache.SetETag ( "\" e111293b17594f1487d136ea7e9314ac \ "");

este define o ETag nos cabeçalhos de resposta. Eu percebi que se eu mudar esta ETag em cada lançamento, e ajustá-la em cada pedido, o cache será invalidado, mas parece que não é. Eu costumava cabeçalhos HTTP Live para ver os resultados eo ETAG está corretamente configurado para a resposta, mas as imagens e css ainda são tomadas a partir do cache ....

Todas as idéias de como eu poderia fazer isso, ou se ele pode ser realizado em tudo?

Agradecemos antecipadamente!

Foi útil?

Solução

Eu tenho que correr em questões como esta no passado. Infelizmente eu não poderia encontrar uma forma muito agradável para fazer isso, então eu tinha que vir acima com uma solução alternativa. Eu só estava lidando com esse problema para arquivos CSS então eu adicionei um parâmetro querystring extra para cada referência CSS, por exemplo

 <link rel="stylesheet" type="text/css" 
       href="default.css?buildnumber=<%= Buildnumber %>" />

O número de compilação é incrementado a cada nova versão para que o navegador foi forçado a ir olhar para este novo arquivo. Não é uma solução ideal, mas funcionou sem problemas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top