Asp.net MVC 2 кеширование

В настоящее время я разрабатываю веб-сайт, используя asp.net MVC 2 в C#. Я никогда не использовал функцию кэширования в MVC и хотел бы применить ее на странице профиля пользователя. Содержание этой страницы редко изменяется, и единственная часть, которая должна быть в реальном времени, - это список последних сообщений пользователя. (Я использую linq-to-sql для загрузки данных из базы данных)

Мне нужно несколько советов о том, какую технику кэширования я должен использовать и как ее реализовать?

Обновление: решение Xandy ниже почти работает, за исключением того, что я не могу передать данные. Как бы я переписать это с помощью? Html.RenderPartial("UserPosts", ViewData["UserPosts"])

3 ответа

Как уже отмечалось в других ответах, "MVC" работает с кэшированием пончиков.

Я не рекомендовал бы это - вместо этого я предложу альтернативу:

У вас есть представление для профиля пользователя, назовем его " UserProfile.aspx ".

Теперь в этом представлении у вас есть куча HTML, включая раздел для "последних сообщений".

Теперь я предполагаю, что это что-то вроде последних 10 сообщений для пользователя.

То, что я хотел бы сделать, это поместить этот HTML/ раздел в частичное представление и обработать его с помощью отдельного метода действия, известного как Partial ViewResult:

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- код непосредственно из контроллера, поэтому вы можете соответствующим образом контролировать выходное кэширование.

Конечный результат очень похож на кэширование пончиков (некоторые части страницы кэшируются, другие нет).

Трюки Фила Хака с кэшированием фрагментов больше не работают в MVC2.

В Stackru мы создаем фрагменты HTML в виде текста и кешируем их, используя HttpRuntime.Cache и другие.

Другие вопросы по тегам