次の方法で、カスタム HTTP ハンドラーで出力キャッシュを使用しています。
public void ProcessRequest(HttpContext context)
{
TimeSpan freshness = new TimeSpan(0, 0, 0, 60);
context.Response.Cache.SetExpires(DateTime.Now.Add(freshness));
context.Response.Cache.SetMaxAge(freshness);
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetValidUntilExpires(true);
...
}
動作しますが、問題は F5 でページを更新すると、最後のコードラインにもかかわらず (キャッシュの使用ではなく) ページが再生成されることです。
context.Response.Cache.SetValidUntilExpires(true);
助言がありますか?
UPD: 問題の原因は、HTTP ハンドラーの応答がサーバーにキャッシュされていないことです。次のコードは Web フォームではうまく機能しますが、ハンドラーではうまく機能しません。
Response.Cache.SetCacheability(HttpCacheability.Server);
サーバーでの http ハンドラー応答のキャッシュの詳細はありますか?