Как уже говорилось в других ответах, "MVC" работает с кэшированием пончиков.
Я бы не советовал - вместо этого я предложу альтернативу:
У вас есть представление для профиля пользователя, назовем его « UserProfile.aspx ».
Теперь в этом представлении у вас есть куча HTML, включая раздел для "последних сообщений".
Теперь я предполагаю, что это что-то вроде последних 10 сообщений для пользователя .
Что бы я сделал, это поместил этот HTML / раздел в частичное представление и обработал его с помощью отдельного метода действия, известного как 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);
}
}
Визуализация частичного представления с использованием 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>
Таким образом, вы можете максимально использовать OutputCache для основных деталей (Index ()), но последние записи не кэшируются. (или вы можете иметь очень маленький период кэширования).
Метод рендеринга части jQuery отличается от RenderPartial , так как таким образом вы обслуживаете HTML-код непосредственно из контроллера, поэтому вы можете соответствующим образом контролировать кэширование вывода.
Конечный результат очень похож на кэширование пончиков (некоторые части страницы кэшируются, другие нет).