Come altre risposte hanno dichiarato, ciambella caching "sorta di" lavori in MVC.
io non lo consiglio - invece io ti offro un alterantive:
si ha una vista per il profilo di utenti, chiamiamolo "UserProfile.aspx".
Ora su questa vista, hai un sacco di HTML, tra cui una sezione per "post recenti".
Ora, presumo che si tratti di qualcosa come gli ultimi 10 post per l'utente.
quello che vorrei fare è mettere questo HTML/sezione in una vista parziale, e servire attraverso un metodo di azione separata, alias un PartialViewResult:
public class UserProfileController
{
[HttpGet]
[OutputCache (Duration=60)]
public ActionResult Index() // core user details
{
var userProfileModel = somewhere.GetSomething();
return View(userProfileModel);
}
[HttpGet]
public PartialViewResult DisplayRecentPosts(User user)
{
var recentPosts = somewhere.GetRecentPosts(user);
return PartialViewResult(recentPosts);
}
}
Render la Vista parziale utilizzando jQuery:
<script type="text/javascript">
$(function() {
$.get(
"/User/DisplayRecentPosts",
user, // get from the Model binding
function (data) { $("#target").html(data) } // target div for partial
);
});
</script>
In questo modo, è possibile eseguire il maxout di OutputCache per i dettagli principali (Index()), ma i post recenti non vengono memorizzati nella cache. (oppure puoi avere un periodo di cache molto piccolo).
Il metodo jQuery di rendering parziale è diverso da RenderPartial, in questo modo si sta servendo l'HTML direttamente dal controller, in modo da poter controllare la cache di output di conseguenza.
Il risultato finale è molto simile alla cache ciambella (parti della pagina memorizzate nella cache, altre no).
Vedere anche http://stackoverflow.com/questions/4082826/when-and-how-to-go-about-performing-caching-in-asp-net-mvc/4091232#4091232 –
qualcuno conosce la risposta? al mio aggiornamento? – Rana
è necessario utilizzare il quarto sovraccarico per RenderPartial (http://msdn.microsoft.com/en-us/library/dd470561.aspx) provare: 'Html.RenderPartial (" UserPosts.ascx ", Model.UserPosts, nuovo ViewDataDictionary {Model = Model.UserPosts} '. – RPM1984