Wie andere Antworten verwendet haben angegeben, Donut-Caching „Art“ Werke in MVC.
Ich würde es nicht empfehlen - stattdessen werde ich ein alterantive bieten:
Sie haben eine Ansicht für die Benutzer Profil, nennen wir es „UserProfile.aspx“.
Jetzt auf dieser Ansicht haben Sie eine Reihe von HTML, einschließlich eines Abschnitts für "aktuelle Beiträge".
Nun nehme ich an, das ist so etwas wie die letzten 10 Beiträge für den Benutzer.
Was ich tun würde, gesetzt wird HTML/Abschnitt in eine Teilansicht, und servieren es über eine separate Aktion-Methode, auch bekannt als ein 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);
}
}
die Teilansicht mit jQuery Render aus:
<script type="text/javascript">
$(function() {
$.get(
"/User/DisplayRecentPosts",
user, // get from the Model binding
function (data) { $("#target").html(data) } // target div for partial
);
});
</script>
Auf diese Weise können Sie den OutputCache für die Kerndetails (Index()) maximieren, aber die letzten Beiträge werden nicht zwischengespeichert. (oder Sie können eine sehr kleine Cache-Periode haben).
Die jQuery-Methode zum Rendern der partiellen unterscheidet sich von RenderPartial, wie Sie den HTML-Code direkt aus dem Controller dienen, so können Sie die Ausgabe zwischenspeichern entsprechend.
Das Endergebnis ist sehr ähnlich wie Donut-Caching (Teile der Seite zwischengespeichert, andere nicht).
Siehe auch http://stackoverflow.com/questions/4082826/when-and-how-to-go-about-performing-caching-in-asp-net-mvc/4091232#4091232 –
jemand weiß die Antwort? zu meinem Update? – Rana
Sie müssen die vierte Überladung für RenderPartial verwenden (http://msdn.microsoft.com/en-us/library/dd470561.aspx) versuchen: 'Html.RenderPartial (" UserPosts.ascx ", Model.UserPosts, neue ViewDataDictionary {Model = Model.UserPosts} '. – RPM1984