Như câu trả lời khác đã nêu, bánh rán bộ nhớ đệm "loại" công trình trong MVC.
tôi sẽ không khuyên bạn nên nó - thay vào đó tôi sẽ cung cấp một alterantive:
Bạn có một Xem cho người sử dụng hồ sơ, chúng ta hãy gọi nó là "UserProfile.aspx".
Giờ đây trên Chế độ xem này, bạn có một loạt HTML, bao gồm phần dành cho "bài đăng gần đây".
Bây giờ, tôi giả sử đây là một cái gì đó giống như 10 bài đăng cuối cùng cho người dùng.
gì tôi sẽ làm là đặt HTML này/phần vào một Xem phần, và phục vụ nó thông qua một phương pháp hành động riêng biệt, hay còn gọi là một 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 ra Xem phần sử dụng 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>
Bằng cách đó, bạn có thể tối đa OutputCache cho chi tiết cốt lõi (chỉ mục()), nhưng các bài đăng gần đây không được lưu trong bộ nhớ cache. (hoặc bạn có thể có một khoảng thời gian cache rất nhỏ).
Phương pháp jQuery hiển thị một phần khác với RenderPartial, vì cách này bạn đang phục vụ HTML trực tiếp từ bộ điều khiển, vì vậy bạn có thể kiểm soát bộ đệm đầu ra tương ứng.
Kết quả cuối cùng rất giống với bộ nhớ đệm donut (các phần của trang được lưu trong bộ nhớ cache, không có bộ nhớ cache khác).
Xem thêm http://stackoverflow.com/questions/4082826/when-and-how-to-go-about-performing-caching-in-asp-net-mvc/4091232#4091232 –
ai biết câu trả lời? để cập nhật của tôi? – Rana
bạn cần sử dụng quá tải thứ tư cho RenderPartial (http://msdn.microsoft.com/en-us/library/dd470561.aspx) thử: 'Html.RenderPartial (" UserPosts.ascx ", Model.UserPosts, mới ViewDataDictionary {Model = Model.UserPosts} '. – RPM1984