J'ai du contenu statique avec des en- Max-Age
têtes de contrôle de cache attachés afin que les clients mettent en cache le contenu statique. Cependant, IIS 7.5 envoie toujours cet en-tête lorsqu'il existe des réponses d'erreur conseillant au client de mettre cela en cache.
Cela a pour effet négatif que certains mandataires mettent en cache cette réponse d'erreur. Je pourrais Vary: Accept,Accept-Encoding
mais cela ne résout pas vraiment le problème fondamental de Max-Age
sortir des réponses d'erreur.
La web.config
section IIS actuellement pertinente est:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
Existe-t-il un moyen de faire en sorte que nous ne disions pas aux clients ou aux mandataires de mettre en cache les codes d'erreur 400/500?
Réponses:
J'ai créé une "suite" de tests rudimentaires.
Lorsque j'exécute les tests avec un Web.config minimal sur IIS 7.0 (mode de ligne intégrée sur .NET 4.0), tout se passe; l'en-
Cache-Control
tête de réponse du fichier de test est défini surprivate
lorsque l'en-Accept
tête de sa demande ne correspond pas à celui du fichierContent-Type
.Cela m'amène à croire que vous avez un module qui interrompt la routine de mise en cache statique d'IIS ou IIS 7.0 et 7.5 diffèrent ici.
Voici les fichiers que j'ai utilisés (sans
some-script.js
puisque c'est juste un fichier vide):Web.Config:
test.html:
la source
vous devez spécifier le type de contenu que vous allez mettre en cache. par exemple, vous pouvez mettre en cache les scripts, css, image ..etc. utilisez donc la
<location path ="Scripts">
balise avant la<system.webServer>
balise. de sorte que votre configuration Web ressemble à ceci.la source