ASP.NET MVC 为每个操作命中输出缓存

2024-01-01

我们正在使用 ASP.NET MVC 3 和 AppFabric 作为分布式缓存解决方案来运行相当大的站点构建。我们实现了一个自定义 OutputCacheAdapter 来使用我们的 AppFabric 集群。

我们看到 ASP.NET 为每个操作调用 OutputCacheProvider.Get() 方法,即使该操作没有用 @OutputCacheAttribute 修饰。

如果您使用默认的outputcacheprovider,这并不是什么大问题,但当您运行驻留在单独计算机上的outputcacheprovider时,就会出现问题。


根据设计,首先检查输出缓存是否有页面的缓存副本。如果存在缓存副本,则会返回该副本并且不会执行任何进一步操作。特别是,不派生、检查或执行任何控制器和控制器动作。仅当页面未缓存时才会发生这种情况。

您将需要更改缓存提供程序,以便它可以快速确定页面是否可以被缓存。仅当它是可缓存页面时,才应该去检查分布式缓存。这项检查不能基于OutputCacheAttribute因为它们在请求处理的这一部分期间不可用。相反,必须使用 URL、cookie 和其他 HTML 标头信息进行快速检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 为每个操作命中输出缓存 的相关文章

随机推荐