Configurações do cabeçalho de controle de cache do IIS

2

Atualmente, estou trabalhando em um site que é acessado por meio de https. Recentemente, nos deparamos com um problema em que não conseguimos visualizar .pdf arquivos ou qualquer outro tipo de arquivo enviado como anexo ( Content-Disposition:attachment ).

De acordo com a Base de Dados de Conhecimento Microsoft , isso se deve ao fato de que Cache-Control está definido como no-cache . No entanto, temos um requisito de que todas as páginas sejam totalmente recarregadas sempre que forem visitadas, por isso desativamos o cache em todas as páginas (por meio de nosso código ASP, não por meio das configurações do IIS).

No entanto, criei um caso especial desta página que mostra o anexo, e agora ele retorna um cabeçalho com Cache-Control:private e o prazo de validade definido para 1 minuto no futuro. Isso funciona bem quando eu testo na minha máquina local, usando https. No entanto, quando eu implantar em nosso servidor de teste e testá-lo, os cabeçalhos de resposta ainda retornarão Cache-Control:no-cache .

Não há firewall nem nada entre mim e o servidor, portanto, o próprio IIS deve estar adicionando esses cabeçalhos e substituindo os meus. Não tenho idéia de por que isso faria isso, e isso não faz sentido, mas parece ser a única opção no momento (ainda não encontrei nenhum outro lugar no código que altere os cabeçalhos de cache ).

Alguém pode me apontar para um possível local onde o IIS pode estar definindo esses valores de cabeçalho?

EDIT: Acontece que o IIS não estava mexendo com minhas configurações de cache. Em vez disso, a pasta para a qual eu estava publicando não era a mesma pasta da qual o IIS estava sendo veiculado. Descobri isso quando examinei os caminhos e quando percebi que os arquivos que o IIS estava servindo eram muito antigos. Apontar o IIS na pasta correta corrigiu todos os problemas que eu estava tendo.

    
por a_m0d 28.06.2011 / 22:54

3 respostas

2

Existem poucos locais que podem controlar o armazenamento em cache no IIS.

Todas as configurações devem ser salvas em web.config se a configuração de recursos apropriada puder ser salva localmente (consulte a Delegação de Recursos), caso contrário, ela será salva no arquivo de configuração principal: RootWeb. config (parte do .NET framework, por exemplo: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config ) e / ou ApplicationHost.config ( C:\Windows\System32\inetsrv\config\ApplicationHost.config ). Inicie o Console de Gerenciamento do IIS (Gerenciador do IIS), depois "Editor de Configuração" e "Configuração de Pesquisa" (na barra lateral) e você poderá ver TODOS os arquivos de configuração conhecidos do IIS, bem como pesquisar por arquivos específicos. configurações.

  1. Cabeçalhos de resposta HTTP - muito provavelmente o lugar para cuidar: pode haver uma configuração de cabeçalho personalizada para proibir explicitamente o armazenamento em cache ... ou por meio de "Definir cabeçalhos comuns ..." barra lateral / menu de conteúdo.

  2. O cache de saída também pode afetar os cabeçalhos de armazenamento em cache (nunca usei este e não posso saber mais).

  3. URL Rewrite v2.x também pode ser usado para reescrever cabeçalhos de resposta (regras de saída).

P.S. Esta questão será mais apropriada para perguntar em ServerFault - é mais uma questão de categoria "sysadmin" do que web masters '.

    
por 28.06.2011 / 23:56
1

Como resolvi meu problema (como também editei em questão, mas adicionei aqui para marcar isso como resolvido).

Acontece que o IIS não estava mexendo com minhas configurações de cache. Em vez disso, a pasta para a qual eu estava publicando não era a mesma pasta da qual o IIS estava sendo veiculado. Descobri isso quando examinei os caminhos e quando percebi que os arquivos que o IIS estava servindo eram muito antigos. Apontar o IIS na pasta correta corrigiu todos os problemas que eu estava tendo.

    
por 30.06.2011 / 16:47
0

No meu caso, acontece que as "Extensões" na configuração de Saída de Cache foram ".ext" em vez de apenas "ext", então a política que eu defini não estava tendo efeito. Com isso corrigido, também descobri que não precisava definir o cabeçalho de resposta do Cache-Control.

    
por 02.07.2014 / 02:17