6

Webアプリを提供するためにAzureとIIS7.5を使用していますが、.NETは使用していません。

静的ファイルのデフォルトのキャッシュ制御値を上書きしようとしていますが、IIS 7.5では、何を指定してもキャッシュが追加されないようです。

私のapproot/web.configファイルは次のようになります。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    ...

    <staticContent>
      <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> 
    </staticContent>
    ...

  </system.webServer>
</configuration>

と私の応答ヘッダーは次のとおりです。

Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Cache-Control:no-cache,public,max-age=2592000
Content-Encoding:gzip
Content-Length:4309
Content-Type:application/x-javascript
Date:Mon, 10 Sep 2012 14:42:07 GMT
ETag:"8ccd2f95a8fcd1:0"
Last-Modified:Mon, 10 Sep 2012 13:48:36 GMT
Server:Microsoft-IIS/7.5
Vary:Accept-Encoding
X-Powered-By:ASP.NET

サブフォルダーの1つに追加のweb.configファイルがありますが、それはclientCache値をオーバーライドしません。

IISがキャッシュなしを追加している理由を誰かが知っていますか?

ありがとう!

4

2 に答える 2

2

どうやら、出力キャッシュにはlocation属性が必要です。そうでない場合、staticContent/clientCache設定が上書きされます。

<system.webServer>
    ...
    <caching>
        <profiles>
            <add extension="*" policy="CacheForTimePeriod" duration="00:01:00" varyByQueryString="*" varyByHeaders="X-Requested-With" location="Any" />
        </profiles>
    </caching>
    ...
</system.webServer>
于 2012-09-11T08:41:54.727 に答える
0

問題に基づいて、WebロールでWindowsAzureクラウドサービスを使用していると思います。

その場合、スタートアップタスクを使用して、IISでCache-Controlをセットアップする必要があります。これは、役割が開始されるとWebサイトの構成のままになります。スタートアップタスクのコマンドは、上記の設定に従って次のようになります。

appcmd.exe set config "Default Web Site/folder" -section:system.webServer/staticContent -clientCache.cacheControlCustom:public
appcmd.exe set config "Default Web Site/folder" -section:system.webServer/staticContent -clientCache.cacheControlMode:UseMaxAge
appcmd.exe set config "Default Web Site/folder" -section:system.webServer/staticContent -clientCache.cacheControlMaxAge:"30.00:00:00"

スタートアップタスクでappcmdを使用する方法を知りたい場合は、この記事を読むことができます。

于 2012-09-10T23:57:53.843 に答える