Ich habe statischen Inhalt mit Cache-Steuerelement- Max-Age
Headern, damit Clients den statischen Inhalt zwischenspeichern. IIS 7.5 sendet diesen Header jedoch weiterhin, wenn Fehlerantworten vorliegen, die den Client auffordern, dies zwischenzuspeichern.
Dies hat den negativen Effekt, dass einige Proxys diese Fehlerantwort zwischenspeichern. Ich könnte, Vary: Accept,Accept-Encoding
aber dies behebt nicht wirklich das Grundproblem Max-Age
, Fehlerantworten zu beantworten.
Der aktuell relevante IIS- web.config
Abschnitt lautet:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
Gibt es eine Möglichkeit, wie ich es schaffen kann, damit wir Clients oder Proxys nicht anweisen, 400/500 Fehlercodes zwischenzuspeichern?
Antworten:
Ich habe eine rudimentäre Testsuite erstellt.
Wenn ich die Tests mit einer minimalen Web.config unter IIS 7.0 (Integrierter Pipline-Modus unter .NET 4.0) ausführe, ist alles erfolgreich. Der Antwortheader der Testdatei
Cache-Control
wird auf gesetzt,private
wenn derAccept
Header der Anforderung nicht mit dem der Datei übereinstimmtContent-Type
.Dies lässt mich glauben, dass ein Modul die statische Caching-Routine von IIS unterbricht oder dass sich IIS 7.0 und 7.5 hier unterscheiden.
Hier sind die Dateien, die ich verwendet habe (ohne,
some-script.js
da es sich nur um eine leere Datei handelt):Web.Config:
test.html:
quelle
Sie sollten angeben, welche Art von Inhalt Sie zwischenspeichern möchten. Zum Beispiel könnten Sie Skripte, CSS, Image usw. zwischenspeichern. Verwenden Sie also das
<location path ="Scripts">
Tag vor dem<system.webServer>
Tag. Ihre Webkonfiguration sieht also so aus.quelle