我需要使用System.Web.Caching.Cache缓存一些数据.不确定它是否重要,但数据不是来自数据库,而是来自过多的自定义对象.
ASP.NET MVC对我来说相当新,我想知道这个缓存发生在哪里有意义?
在某种程度上,这在模型级别缓存是有意义的,但我不一定知道这样做的含义(如果有的话).如果要在Controller级别完成缓存,那会影响所有请求,还是只影响当前的HttpContext?
那么......应该在哪里完成应用程序数据缓存,以及实际执行它的好方法是什么?
谢谢你的答案!我仍然试图收集在给定不同场景的情况下缓存最有意义的地方.如果一个人正在缓存整个页面,那么将它保留在视图中是有道理的,但是当它不是整个页面时在哪里画线?
我认为这最终取决于什么你正在缓存.如果要缓存渲染页面的结果,那么它与请求的Http性质紧密相关,并建议使用ActionFilter级别缓存机制.
另一方面,如果要缓存驱动页面本身的数据,则应考虑模型级缓存.在这种情况下,控制器不关心何时生成数据,它只是对数据执行逻辑操作并准备查看.模型级缓存的另一个参数是,如果您对未附加到Http上下文的模型数据有其他依赖性.
例如,我有一个网络应用程序,我的大部分模型被抽象成一个完全不同的项目.这是因为会有第二个使用相同支持的网络应用程序,并且我们有可能使用相同数据的非基于Web的应用程序.我的大部分数据都来自网络服务,这可能是性能杀手,所以我有模型级缓存,控制器和视图完全不知道.