我想将输出缓存与 WCF 数据服务一起使用,尽管没有专门内置来支持缓存,但有一个 OnStartProcessingRequest 方法允许我使用普通的 ASP.NET 机制连接并设置请求的可缓存性。
但是我担心如果缓存大量响应,工作进程会由于过多的内存消耗而被回收。有没有办法为 ASP.NET 输出缓存指定上限,以便如果超过此限制,缓存中的项目将被丢弃?
我已经看到了缓存配置设置,但我从文档中得到的印象是,这是通过 Cache 对象进行显式缓存的,因为有一个单独的outputCacheSettings没有与内存相关的属性。
这是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;
}