【发布时间】:2011-02-20 15:23:16
【问题描述】:
我想将输出缓存与 WCF 数据服务一起使用,虽然没有专门内置的东西来支持缓存,但有一个 OnStartProcessingRequest 方法允许我使用普通的 ASP.NET 机制连接并设置请求的可缓存性。
但我担心如果缓存大量响应,工作进程会由于内存消耗过多而被回收。有没有办法为 ASP.NET 输出缓存指定一个上限,这样如果超过这个限制,缓存中的项目就会被丢弃?
我已经看到了 caching 配置设置,但我从文档中得到的印象是,这是通过 Cache 对象进行显式缓存的,因为有一个单独的 outputCacheSettings 没有与内存相关的属性。
这是来自Scott Hanselman's post 的代码 sn-p,它显示了我如何设置请求的可缓存性。
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;
}
【问题讨论】:
标签: asp.net caching outputcache wcf-data-services odata