2016-07-03 22 views
1

Meine Site ist eine statische Site und ich diene den Inhalt von einem IIS 8-Webserver. Früher habe ich Apache verwenden, und ich habe die folgende Konfiguration für Cache-Busting, die ich in IIS implementieren möchten:Cache-Zerschlagung in IIS mit Abfragezeichenfolge für statischen Inhalt

# Extend cache expiry for fingerprinted URLs 
RewriteCond  %{QUERY_STRING} ^[0-9a-fA-F]{8,}$ 
RewriteRule ^ - [E=revved:1] 

Und dann stelle ich Cache-Control basierend darauf, ob die Umgebungsvariable „auf Touren“ gesetzt :

# (For HTTP/1.1 clients) 
Header set Cache-Control "max-age=1200" env=!revved 
Header set Cache-Control "max-age=31536000" env=revved 

Meine JS und CSS ist gebündelt und ich füge den Hash der Abfragezeichenfolge. Ich mache das gleiche für Bilder.

Bisher war es möglich, das <clientCache /> Element zu verwenden und cacheControlMode="UseMaxAge und cacheControlMaxAge="00:20:00" daran anzufügen.

Was Sie in der Apache-Konfiguration sehen können, ist, dass, wenn die Variable "revved" gesetzt ist, der Proxy-Server (CDN) und der Client die Dateien für 365 Tage zwischenspeichern sollten. Andernfalls sollte es nur für 20 Minuten zwischengespeichert werden. Ich möchte das gleiche Verhalten in meiner web.config haben.

Ich habe über "Output Caching" in IIS gelesen, aber von dem, was ich verstehe, dass für dynamische Seiten mit PHP oder ASP konzipiert ist.

Ich wäre sehr dankbar, wenn jemand mich in die richtige Richtung führen kann.

Antwort

0

Ich glaube, dass ich eine Lösung gefunden habe, die funktioniert. Ich habe einige Hinweise von diesem Beitrag auf MSDN "Change or modify a Response Header value using URL Rewrite" erhalten.

<outboundRules> 
    <rule name="ChangeCacheControlHeaderOneYear"> 
    <match serverVariable="RESPONSE_CacheControl" /> 
    <conditions> 
     <add input="{QUERY_STRING}" pattern="^[0-9a-fA-F]{8,}$" /> 
    </conditions> 
    <action type="Rewrite" value="max-age=31536000" /> 
    </rule> 
    <rule name="ChangeCacheControlHeader20Minutes"> 
    <match serverVariable="RESPONSE_CacheControl" /> 
    <conditions> 
    <add input="{QUERY_STRING}" pattern="^[0-9a-fA-F]{8,}$" negate="true" /> 
    </conditions> 
    <action type="Rewrite" value="max-age=1200" /> 
    </rule> 
</outboundRules>