The*_*ess 7 asp.net-mvc outputcache
我们使用ASP.NET MVC 3和AppFabric作为分布式缓存解决方案运行相当大的站点构建.我们已经实现了一个自定义OutputCacheAdapter来使用我们的AppFabric集群.
我们看到ASP.NET为每个操作调用OutputCacheProvider.Get()方法,即使该操作未使用@OutputCacheAttribute进行修饰.
如果您使用默认的outputcacheprovider,那就不是什么问题,但是当您运行驻留在单独机器上的outputcacheprovider时.
根据设计,首先检查输出缓存是否有页面的缓存副本。如果存在缓存副本,则会返回该副本并且不会执行任何进一步操作。特别是,不派生、检查或执行任何控制器和控制器动作。仅当页面未缓存时才会发生这种情况。
您将需要更改缓存提供程序,以便它可以快速确定页面是否可以被缓存。仅当它是可缓存页面时,才应该去检查分布式缓存。此检查不能基于 ,OutputCacheAttribute因为它们在请求处理的这一部分期间不可用。相反,必须使用 URL、cookie 和其他 HTML 标头信息进行快速检查。