1. ホーム
  2. asp.net

[解決済み] IIS7 キャッシュコントロール

2022-12-14 11:26:27

質問

私は、かなり簡単であろうと思ったことをしようとしています。 IIS 7 を取得して、クライアントに私のサイト上のすべての画像を一定時間 (たとえば 24 時間) キャッシュするように指示します。

私は、次のステップを試しました。 http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx を試してみましたが、効果がありません。サーバーにリクエストを送ると、304 が返されたままです。

誰かこれを行う方法を知っていますか? 私はグラフィックを多用するサイトを持っており、ユーザーがページを要求するたびに (私のサーバーも) ひどい目に遭っています。 奇妙なことに、画像には "Cache-Control private,max-age=3600" が Firebug で表示されているようですが、F5 を押すと、ブラウザはまだそれらを要求しています。

どのように解決するのですか?

Cache-Control ヘッダーを設定したい場合、悲しいことに、IIS7 の UI にはこれを行うためのものがありません。

しかし、この web.config を設定したいフォルダーまたはサイトのルートにドロップすることはできます。

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

これは、そのフォルダとすべてのサブフォルダで7日間コンテンツをキャッシュするようにクライアントに通知します。

IIS7 のメタベースを編集することで、これを行うこともできます。 appcmd.exe を使用して、このようにします。

\¦Windowssystem32¦inetsrv¦appcmd.exe 
  set config "デフォルトのWeb Site/folder" 
  -section:system.webServer/staticContent 
  -clientCache.cacheControlMode:UseMaxAge

\¦Windowssystem32¦inetsrv¦appcmd.exe 
  set config "デフォルトのWeb Site/folder" 
  -section:system.webServer/staticContent 
  -clientCache.cacheControlMaxAge:"7.00:00:00"