С помощью [OutputCacheAttribute] в ASP.NET MVC 3 вы можете выводить кеш с большой гибкостью. Полезно использовать свойство VaryByHeader для кэширования кэша по имени хоста. Например:
[OutputCache(Duration = 60, VaryByHeader = "host")]
public ActionResult Foo()
{
return this.View();
}
Тем не менее, при действиях с детьми вы не можете применять "VaryByHeader". Структура создает следующее исключение:
OutputCacheAttribute для дочерних действий поддерживает только продолжительность, VaryByCustom и VaryByParam. Пожалуйста, не устанавливайте CacheProfile, Расположение, NoStore, SqlDependency, VaryByContentEncoding или Значения VaryByHeader для дочерних действий.
Мой вопрос: почему?
Является ли причина, по которой мы не можем VaryByHeader в дочернем действии, потому что это обеспечило бы противоречивую дисперсию, поскольку родительское действие могло бы указать другое значение VaryByHeader?
Если я хочу кэшировать дочерние действия по-разному на основе имени хоста, что это значит и как я могу это сделать?