0

私は asp.net Web サイトを持っており、クライアント ブラウザーが aspx ページの HTML 出力を取得したらキャッシュするようにしたいと考えています。いろいろ読んでみると、IIS7 はこれをそのままサポートしていないことがわかったのでOnLoad、メイン マスター ページのイベントに次のコードを追加しました。

protected override void OnLoad(EventArgs e) {
    DateTime dt = DateTime.Now.AddDays(10);
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetExpires(dt);
    Response.Cache.SetMaxAge(new TimeSpan(dt.Ticks - DateTime.Now.Ticks));

    base.OnLoad(e);
}

これで、応答ヘッダーに次のように表示されます。

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Date: Fri, 05 Jul 2013 14:25:03 GMT
Content-Length: 10201

たぶん、私はこれを無効にするためにずっと前に何かをしたのかもしれませんが、私はできません。Google を検索したときにこれに関する情報が見つからない場合、おそらくcache-controlaspx ページの場合は良い考えではないと思います...しかし、クラウドフロント (CDN) がサイト全体の配信を許可するには、これが必要です。

4

1 に答える 1

0

IIS パイプラインのどこか (どこにあるかはまだわかりません) で、キャッシュ ヘッダーが設定されていませんでした。私のマスター ページで、使用したいキャッシュ ヘッダーを設定する前に、次のコードを追加しましResponse.ClearHeaders();た騙す。

于 2013-07-07T13:02:22.380 に答える