我希望将输出缓存与WCF数据服务一起使用,尽管没有专门内置的支持缓存的功能,但有一个OnStartProcessingRequest方法允许我使用普通的ASP.NET机制挂接并设置请求的可缓存性。
但是,我担心如果缓存大量响应,那么由于内存消耗过多,工作进程将被回收。是否可以指定ASP.NET输出缓存的上限,以便在超过此限制时丢弃缓存中的项?
我见过
caching
配置设置,但我从文档中得到的印象是,这是为了通过缓存对象进行显式缓存,因为有一个单独的
outputCacheSettings
它没有与内存相关的属性。
这是一个来自
Scott Hanselman's post
这显示了我如何设置请求的可缓存性。
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;
}