2009-05-02 111 views
4

当前ASP.NET MVC的OutputCache属性有一个巨大的垮台。如果您想要缓存部分网站,则必须使用解决方法,因为MVC依赖于ASP.NET管道的限制。在ASP.NET MVC中解决整个页面缓存的方法

假设您的页面有一个您通过RenderAction绘制的统计模块,您不能仅仅缓存该部分的开箱即用功能。

我的问题是,你发现什么方式来解决这个优雅和易于使用的限制?我个人发现其中2人并不特别满意。虽然他们工作,但在他们周围构建应用程序时似乎只是感觉不对。

解决方案1 ​​ - 副控制器 http://mhinze.com/subcontrollers-in-aspnet-mvc/

解决方案2 - 部分请求 http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

所以如果你有另一种解决方案或者甚至你使用这些解决方案的一个办法优雅我喜欢关于设计和/或使用的一些想法。

回答

4

我已经做了这个选项2(使用Html.RenderAction)取得了相当不错的成功。我还为我的控制器创建了不同的基类,一个缓存,另一个没有,因此我将所有缓存的操作放在一个地方。我不经常这样做,因此隔离这些行为并不算太坏。结合使用缓存和我写的GZip压缩过滤器,我可以从MVC中获得相当出色的性能。

1

如何使用jQuery通过ajax加载一些区域(div等)。然后,您可以将不同区域缓存为完整的请求,具有不同的粒度。

+0

我正在考虑这个问题,但我不希望对那些禁用javascript的用户提供低级支持。 – 2009-05-02 20:11:39

4

在某些情况下,最好不要使用ASP.NET OutputCache功能。请使用可选的gzip压缩在业务/服务层中使用缓存。有时这种组合比完整的输出缓存更快。

+0

你能解释'你在服务层中缓存'是什么意思吗?你的意思是你的服务层返回压缩结果? – 2009-05-10 05:41:49