2016-07-03 14 views
1

私のサイトは静的なサイトで、IIS 8 Webサーバーのコンテンツを提供します。私は、Apacheを使用するために使用されると私はIISに実装したいキャッシュバスティングのための以下の構成があります。静的コンテンツのクエリ文字列を使用してIISでキャッシュを破る

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

をそして私は「燃え」環境変数が設定されているかどうかに基づいてのCache-Controlを設定します:

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

My JSとCSSがバンドルされており、クエリ文字列にハッシュを添付します。私はイメージのために同じことをする。

ここまで私ができることは、<clientCache />要素を使用して、cacheControlMode="UseMaxAgecacheControlMaxAge="00:20:00"を添付することです。

Apacheの設定で見ることができるのは、 "revved"変数が設定されている場合、プロキシサーバー(CDN)とクライアントは365日間ファイルをキャッシュする必要があるということです。それ以外の場合は、20分だけキャッシュする必要があります。私はweb.configで同じ動作をしたいと思います。

IISで「出力キャッシュ」について読みましたが、PHPまたはASPを使用して動的ページ用に設計されていると理解しています。

誰かが私を正しい方向に導くことができれば、とても感謝しています。

答えて

0

私は働いている解決策を考え出しました。私はMSDN "Change or modify a Response Header value using URL Rewrite"でこの記事からいくつかのヒントを得ました。

<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> 
関連する問題