Eu tenho algum conteúdo estático com os Max-Age
cabeçalhos de controle de cache anexados, para que os clientes armazenem em cache o conteúdo estático. No entanto, o IIS 7.5 ainda envia esse cabeçalho quando houver respostas de erro aconselhando o cliente a armazená-lo em cache.
Isso tem o efeito negativo de que alguns proxies armazenarão em cache essa resposta de erro. Eu poderia, Vary: Accept,Accept-Encoding
mas isso realmente não aborda o problema raiz de Max-Age
sair com respostas de erro.
A web.config
seção atual relevante do IIS é:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
Existe uma maneira de que eu possa fazê-lo para não solicitar aos clientes ou proxies que armazenem em cache códigos de erro 400/500?
Respostas:
Eu criei um "conjunto" de testes rudimentar.
Quando executo os testes com um mínimo de Web.config no IIS 7.0 (modo pipline integrado no .NET 4.0) tudo passa; o
Cache-Control
cabeçalho de resposta do arquivo de teste é definido comoprivate
quando oAccept
cabeçalho da solicitação não corresponde ao do arquivoContent-Type
.Isso me leva a acreditar que você tem algum módulo que interrompe a rotina de cache estático do IIS ou o IIS 7.0 e 7.5 diferem aqui.
Aqui estão os arquivos que eu usei (sans,
some-script.js
pois é apenas um arquivo vazio):Web.Config:
test.html:
fonte
você deve especificar que tipo de conteúdo você irá armazenar em cache. por exemplo, você pode armazenar em cache scripts, css, image ..etc. então use a
<location path ="Scripts">
tag antes da<system.webServer>
tag. para que sua configuração da web fique assim.fonte