Wie konfiguriere ich den statischen Inhaltscache pro Ordner und Erweiterung in IIS7?


143

Ich möchte in IIS7 Regeln für das Zwischenspeichern statischer Inhalte auf meiner ASP.NET-Website einrichten.

Ich habe diese Artikel gesehen, in denen detailliert beschrieben wird, wie dies mit dem <clientCache />Element in web.config:

Client-Cache <clientCache>(IIS.NET)
Hinzufügen von Expires oder Cache Control Header zu statischen Inhalten in IIS (Stapelüberlauf)

Diese Einstellung scheint jedoch global für alle statischen Inhalte zu gelten. Gibt es eine Möglichkeit, dies nur für bestimmte Verzeichnisse oder Erweiterungen zu tun?

Zum Beispiel kann ich zwei Verzeichnisse haben, die separate Cache-Einstellungen benötigen:

/static/images
/content/pdfs

Ist es möglich , Regeln für das Senden von Cache - Header einzurichten ( max-age, expiresusw.) basierend auf Erweiterungen und Ordnerpfaden?

Bitte beachten Sie, dass ich dies über tun kann, web.configda ich keinen Zugriff auf die IIS-Konsole habe.

Antworten:


217

Sie können bestimmte Cache-Header für einen ganzen Ordner in Ihrem Stammverzeichnis festlegen web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Note the use of the 'location' tag to specify which 
       folder this applies to-->
  <location path="images">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

Oder Sie können diese in einer web.configDatei im Inhaltsordner angeben :

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
    </staticContent>
  </system.webServer>
</configuration>

Mir ist kein integrierter Mechanismus für bestimmte Dateitypen bekannt.


1
Toll. Würden Sie mir ein Buch über IIS 7 empfehlen? Ich würde gerne etwas über diese Dinge lernen. Vielen Dank.
Vtortola

5
@vtortola - mit dem [IIS7 Resource Kit] (: amazon.co.uk/dp/0735624410 ) kann man nichts falsch machen , es ist eigentlich ziemlich nützlich. Das Wrox Pro IIS7- Buch ist auch nicht schlecht. TBH Ich habe hauptsächlich von der IIS.NET-Konfigurationsreferenzseite gelernt: iis.net/ConfigReference und vom Stöbern in der %systemroot%\system32\inetsrv\config\applicationhost.configDatei und verwandten Freunden.
Kev

7
Weiß jemand, ob dies rekursiv ist? Wenn Sie beispielsweise Unterordner unter Ihrem Bildpfad haben, werden diese auch zwischengespeichert?
StuffandBlah

1
Eine Sache zu beachten ist, dass der Browser die path=""Groß- und Kleinschreibung zu sehen scheint
Chris S

9
@StuffandBlah Ja, es ist rekursiv. Ich habe es einfach selbst versucht und IIS hat die gleichen Cache-Steuerungseinstellungen auf alle Anforderungen für Dateien in Unterordnern des Ordners angewendet, den ich als "Speicherort" angegeben habe.
Erik Öjebo

68

Sie können dies pro Datei tun. Verwenden Sie das Pfadattribut, um den Dateinamen einzuschließen

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>

1
Und wenn Sie es auf alle Dateien einer bestimmten Erweiterung anwenden möchten? würde .xml oder * .xml alleine funktionieren?
Zulgrib

2
@Zulgrib, um es auf eine bestimmte Erweiterung anzuwenden, können Sie ausgehende Umschreibregeln verwenden: stackoverflow.com/questions/32987486/…
jotap

@Zulgrib Wie verwenden wir das Standort-Tag für mehr als eine Datei, aber nicht für alle Dateien eines Typs? Zum Beispiel ein paar JPG-Dateien im Stammordner, aber nicht alle?
Rahatur

-2

Ich hatte das gleiche Problem. Für mich war das Problem, wie man ein Cache-Limit für Bilder konfiguriert. Und ich bin auf diese Seite gestoßen, die einige Einblicke in die Vorgehensweise gab, wie das Problem behandelt werden kann. Hoffentlich ist es auch für Sie hilfreich. Link : [ https://varvy.com/pagespeed/cache-control.html]


2
Bitte erwägen Sie, einige Informationen aus dem Link zu Ihrer Antwort gemäß stackoverflow.com/help/how-to-answer hinzuzufügen : Links zu externen Ressourcen werden empfohlen. Fügen Sie jedoch einen Kontext um den Link hinzu, damit Ihre Mitbenutzer eine Vorstellung davon haben, was es ist und warum es da ist. Zitieren Sie immer den relevantesten Teil eines wichtigen Links, falls die Zielwebsite nicht erreichbar ist oder dauerhaft offline geht.
Greg der Unglaubliche
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.