Con il [OutputCacheAttribute] in ASP.NET MVC 3, è possibile cache di output con una buona dose di flessibilità. È utile sfruttare la proprietà 'VaryByHeader' per eseguire il caching del bucket in base al nome host. Ad esempio:VaryByHeader con OutputCacheAttribute sulle azioni bambino
[OutputCache(Duration = 60, VaryByHeader = "host")]
public ActionResult Foo()
{
return this.View();
}
Tuttavia, sulle azioni figlio, non è possibile applicare "VaryByHeader". Il quadro getta la seguente eccezione:
OutputCacheAttribute per le azioni del bambino supporta solo Durata, VaryByCustom e valori VaryByParam. Non impostare CacheProfile, Location, NoStore, SqlDependency, VaryByContentEncoding o Valori VaryByHeader per azioni figlio.
La mia domanda è, perché?
È il motivo per cui non è possibile VaryByHeader in un'azione figlio perché fornirebbe una varianza in conflitto, poiché l'azione principale potrebbe aver specificato un valore VaryByHeader diverso?
Se voglio mettere in cache le azioni del bambino in modo diverso basate su host, che cosa significa questo, e come potrei fare a questo proposito?
Solo per curiosità, fare azioni bambino causare un altro HTTP ottenere? Forse i progettisti di questo hanno pensato che dal momento che non ci sia _second_ postback non ci sarebbe bisogno di memorizzare nella cache le intestazioni http differenti. –
No, le azioni secondarie sono solo un'astrazione all'interno della stessa richiesta. –