WCF Data Services で出力キャッシュを使用したいと考えています。キャッシュをサポートするために特別に組み込まれたものは何もありませんが、通常の ASP.NET メカニズムを使用して要求のキャッシュ可能性をフックして設定できる OnStartProcessingRequest メソッドがあります。
しかし、大量の応答がキャッシュされると、メモリが過剰に消費されてワーカー プロセスがリサイクルされることが心配です。ASP.NET 出力キャッシュの上限を指定して、この上限を超えた場合にキャッシュ内のアイテムが破棄されるようにする方法はありますか?
キャッシュ構成設定を見てきましたが、ドキュメントから、メモリ関連の属性を持たない別のoutputCacheSettingsがあるため、これは Cache オブジェクトを介した明示的なキャッシュ用であるという印象を受けます。
以下は、 Scott Hanselman の投稿からのコード スニペットで、リクエストのキャッシュ可能性をどのように設定しているかを示しています。
protected override void OnStartProcessingRequest(ProcessRequestArgs args)
{
base.OnStartProcessingRequest(args);
//Cache for a minute based on querystring
HttpContext context = HttpContext.Current;
HttpCachePolicy c = HttpContext.Current.Response.Cache;
c.SetCacheability(HttpCacheability.ServerAndPrivate);
c.SetExpires(HttpContext.Current.Timestamp.AddSeconds(60));
c.VaryByHeaders["Accept"] = true;
c.VaryByHeaders["Accept-Charset"] = true;
c.VaryByHeaders["Accept-Encoding"] = true;
c.VaryByParams["*"] = true;
}