web-dev-qa-db-ja.com

IIS7でフォルダーおよび拡張機能ごとに静的コンテンツキャッシュを構成する方法

ASP.NET Webサイトでの静的コンテンツキャッシュのためにIIS7でルールを設定したいと思います。

<clientCache />web.config要素を使用してそれを行う方法を詳しく説明しているこれらの記事を見てきました。

クライアントキャッシュ<clientCache>(IIS.NET)
IIS(スタックオーバーフロー)の静的コンテンツにExpiresまたはCache Control Headerを追加

ただし、この設定はすべての静的コンテンツにグローバルに適用されるようです。特定のディレクトリまたは拡張機能に対してのみこれを行う方法はありますか?

たとえば、個別のキャッシュ設定が必要な2つのディレクトリがある場合があります。

/static/images
/content/pdfs

拡張機能とフォルダーパスに基づいてキャッシュヘッダー(max-ageexpiresなど)を送信するためのルールを設定することは可能ですか?

IISコンソールにアクセスできないため、web.configを介してこれを実行できる必要があります。

140
frankadelic

ルート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>

または、コンテンツフォルダーのweb.configファイルでこれらを指定できます。

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

特定の種類のファイルを対象とする組み込みのメカニズムを知りません。

213
Kev

ファイルごとに実行できます。パス属性を使用してファイル名を含める

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