Dzięki [OutputCacheAttribute] w ASP.NET MVC 3, możesz wyprowadzać cache z dużą dozą elastyczności. Warto wykorzystać właściwość "VaryByHeader" do buforowania pamięci podręcznej według nazwy hosta. Na przykład:VaryByHeader z OutputCacheAttribute na akcje podrzędne
[OutputCache(Duration = 60, VaryByHeader = "host")]
public ActionResult Foo()
{
return this.View();
}
jednak na działania dzieci, nie można zastosować 'VaryByHeader'. Ramy rzuca następujący wyjątek:
OutputCacheAttribute działań podrzędnych obsługuje tylko czas trwania, VaryByCustom, a wartości VaryByParam. Nie ustawiaj wartości CacheProfile, Lokalizacja, NoStore, SqlDependency, VaryByContentEncoding lub VaryByHeader dla czynności podrzędnych.
Moje pytanie brzmi: dlaczego?
Czy jest to powód, dla którego nie możemy VaryByHeader w akcji podrzędnej, ponieważ zapewnia warunek sprzeczności, ponieważ akcja nadrzędna może mieć inną wartość VaryByHeader?
Jeśli chcę buforować czynności podrzędne w różny sposób w zależności od nazwy hosta, co to oznacza i jak mam się z tym pogodzić?
prostu ciekawy, wykonaj czynności dziecko powodować inny HTTP dostać? Być może projektanci tego stwierdzili, że skoro nie ma już _second_ posta, nie byłoby potrzeby buforowania przez różne nagłówki HTTP. –
Nie, czynności podrzędne to tylko abstrakcja w ramach tego samego żądania. –