ASP.NET MVC为每个动作都输出outputcache
我们正在使用ASP.NET MVC 3和AppFabric作为分布式缓存解决方案运行相当大的网站构建。 我们已经实现了一个自定义的OutputCacheAdapter来使用我们的AppFabric集群。
我们看到ASP.NET为每个操作调用OutputCacheProvider.Get()方法,即使该操作未用@OutputCacheAttribute修饰。
如果使用默认的outputcacheprovider,那么这并不是什么问题,但是当您正在运行驻留在单独计算机上的outputcache提供程序时。
在设计上,首先检查输出缓存以获取页面的缓存副本。 如果有一个缓存副本,它将被返回,并且没有进一步执行。 特别是,没有控制器和控制器动作被派生,检查或执行。 只有当页面没有被缓存时才会发生这种情况。
您需要更改缓存提供程序,以便快速确定是否可以缓存页面。 只有当它是一个可缓存页面时,它才会去检查分布式缓存。 此检查不能基于OutputCacheAttribute
因为它们在请求处理的这一部分期间不可用。 相反,快速检查必须使用URL,Cookie和其他HTML标头信息。
您可以使用甜甜圈缓存输出缓存属性,它允许您为输出缓存键定义前缀。 因此,如果缓存键以自己的前缀开头,那么在自定义提供程序中只需获取/设置缓存即可。
链接地址: http://www.djcxy.com/p/58837.html