自定义输出缓存提供程序未用于子操作缓存

时间:2014-03-17 12:33:32

标签: c# asp.net-mvc caching

所以我有CustomOutputCacheProvider扩展了abstract class OutputCacheProver,因为我的网页可以用不同的语言查看。语言是服务器已知的。我的意思是服务器知道UI的当前文化(例如“en-US”)。所以我扩展OutputCacheProver的原因是让这种语言处理在服务器端保持原样。

自定义提供程序基本上针对不同的语言存储不同的数据。但问题是,(一切都没关系,但这个,提供程序在web.config中注册),ChildActionOnly操作不使用此提供程序。我的意思是,假设返回PartialView并且在其上具有ChildActionOnlyOutputCache属性的操作。 我注册的提供程序未缓存PartialView。或者我不知道,还有其他事情正在发生。对于我尝试过的任何其他事情,我的供应商都在努力工作。我想对于Child动作缓存ASP.NET MVC正在使用其他一些提供者本身。无论如何,在这里可以做些什么?

1 个答案:

答案 0 :(得分:2)

我怀疑您最好的选择是覆盖GetVaryByCustomString并确保自定义字符串包含语言。然后它应该从任何提供者层/实现找到工作。但是,可能只有在VaryByCustom有值时才会检查,这意味着调整[OutputCache(...)]以包含某些内容 - 例如[OutputCache(... VaryByCustom="language;...")]

请注意,如果您已经拥有GetVaryByCustomString(与VaryByCustom一起使用),则除了所有其他问题之外,您的语言特定部分应该是

注意:使用这种方法,您首先不需要自定义输出缓存提供程序。