自定义输出缓存提供程序未用于子操作缓存
本文关键字:缓存 用于 操作 输出 自定义 程序 | 更新日期: 2023-09-27 17:50:40
所以我有这个CustomOutputCacheProvider
扩展了abstract class OutputCacheProver
,因为我的网页可以用不同的语言查看。语言是服务器所知道的。我的意思是服务器知道当前UI的文化(例如"en-US")。所以我扩展OutputCacheProver
的原因是让这种语言处理保持在服务器端,就像它一样。
ChildActionOnly
操作,此提供程序不使用。我的意思是,假设返回PartialView
并具有ChildActionOnly
和OutputCache
属性的操作。我注册的提供程序没有缓存PartialView
。或者我不知道,发生了别的事。对于我尝试过的其他任何东西,我的提供者都工作得很好。我想对于子动作缓存ASP。. NET MVC本身正在使用一些其他的提供者。总之,这里可以做什么呢?
我认为您最好的选择是重写GetVaryByCustomString
并确保自定义字符串包含语言。然后,它应该可以从任何提供程序层/实现中找到。但是,可能只有在VaryByCustom
有值时才会检查,这意味着调整[OutputCache(...)]
以包含某些内容-例如[OutputCache(... VaryByCustom="language;...")]
注意,如果您已经有一个GetVaryByCustomString
(用于VaryByCustom
),除了所有其他关注之外,您的特定于语言的部分应该是。
注意:使用这种方法,您首先不需要自定义输出缓存提供程序。