5

IIS 7.5では、出力キャッシュを有効にしていない場合、phpスクリプトはCache-Controlヘッダーにブラウザーキャッシュを正常に設定します。

Cache-Control:max-age = 43200、public
Content-Type:text / html
Expires:Wed、30 May 2012 22:15:18 GMT
Server:Microsoft-IIS / 7.5
X-Powered-By:PHP/
5.4。3Date :2012年5月30日水曜日10:15:18 GMT
接続:閉じる
Content-長さ:5105

ただし、.phpファイルの出力キャッシュを有効にすると、次のヘッダーが表示されます。

Cache-Control:no-cache、max-age = 43200、public
Content-Type:text / html
Expires:Wed、30 May 2012 22:25:34 GMT
Server:Microsoft-IIS / 7.5
X-Powered-By:PHP / 5.4.3日付:2012年5月30日水曜日10:25:34
GMT
接続:閉じる

(phpスクリプトが機能する前に、「no-cache」がCache-Controlに追加されていることに注意してください)

ファイルタイプに対して出力キャッシュが有効になっている場合、「キャッシュなし」がCache-Controlキーに追加されないようにする方法はありません。私はweb.configファイルでそれをやろうとしました:

        <customHeaders>
            <remove name="X-Powered-By" />
    <remove name="Cache-Control" />
            <add name="Cache-Control" value="public" />
        </customHeaders>

それはうまくいきません。なぜこれは相互に排他的でなければならないのですか?出力キャッシュとブラウザキャッシュの両方を有効にしたいのですが。

4

1 に答える 1

9

残念ながら、IISマネージャーインターフェイスでは、出力キャッシュモジュールでサポートされているすべての機能を使用できるわけではありません。これらの機能の1つは、cache-controlヘッダーを間接的に制御するキャッシュの場所を設定することです。web.configを手動で編集して変更する必要があります。構文は次のようになります。

<caching>
    <profiles>
        <add extension=".php" ..... location="Any" />
    </profiles>
</caching>

<add />キャッシュをどのように機能させるかに応じて、タグにはより多くのオプションがあります。location="..."重要な部分は、属性を追加することです。次の値がサポートされており、次のようにcache-controlヘッダーを制御します。

AnyまたはDownstream=public

ServerAndClientまたはClient=private

NoneまたはServerまたは空=no-cache

属性はデフォルトで存在しないため、出力キャッシュが有効になっlocationている場合、IISはデフォルトでCache-Control: no-cacheヘッダーを送信します。出力キャッシングとサポートされる機能の詳細については、IIS7の応答キャッシングも参照してください。

于 2012-05-30T22:03:18.177 に答える