web-dev-qa-db-ja.com

Asp.net/iisを取得して、静的ファイルのCache-control:max-ageを設定します

URLルーティングを使用したWebformsプロジェクトがあります。画像とcssファイルの例外ルートを次のように定義しました

routes.Add("IgnoreImages", new Route("img/{*pathInfo}", new StopRoutingHandler()));
routes.Add("IgnoreCss", new Route("css/{*pathInfo}", new StopRoutingHandler()));

したがって、静的ファイルはIISによって直接提供され、ルーティングはバイパスされる必要があります。

Fiddlerで画像の応答を確認する場合、キャッシュ見出しの下にある唯一のキーは日付です。不足しているのは、Cache-control:max:ageキーです。静的ファイルのキャッシュポリシーを指定するにはどうすればよいですか?アプリケーションはIIS7.5で実行されます。

18

解決策は、web.configファイルのsystem.webserverセクションを使用して、サーバーのキャッシュ(および圧縮)を構成することです。開始点は次のとおりです。 http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

例:

<configuration>
  <system.webServer>
    <staticContent>
       <clientCache cacheControlMode="UseMaxAge"
        cacheControlMaxAge="1.00:00:00" /> <!-- 1 day -->
    </staticContent>
  </system.webServer>
</configuration>
27
Dario Solera

Darioの答えはほとんどの方法で私を導きましたが、属性を<clientCache>cacheControlCustom="public"に追加する必要がありました。そうしないと、IISはCache-Controlヘッダーをブラウザーに送信しませんでした。 この回答 を参照してください。

16
Evan Haas