使用ASP.NET MVC 3中的[OutputCacheAttribute],您可以非常灵活地输出缓存。利用'VaryByHeader'属性按主机名进行缓存是很有用的。例如:
[OutputCache(Duration = 60, VaryByHeader = "host")]
public ActionResult Foo()
{
return this.View();
}
但是,对于子操作,您无法应用'VaryByHeader'。该框架抛出以下异常:
子操作的OutputCacheAttribute仅支持Duration, VaryByCustom和VaryByParam值。请不要设置CacheProfile, Location,NoStore,SqlDependency,VaryByContentEncoding或 子动作的VaryByHeader值。
我的问题是,为什么?
我们为什么不能在子操作中使用VaryByHeader,因为它会提供冲突的方差,因为父操作可能指定了不同的VaryByHeader值?
如果我想根据主机名不同地缓存子操作,这意味着什么,我将如何处理它?