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

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

9 голосов
/ 04 ноября 2010

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

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

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

Ответы [ 3 ]

5 голосов
/ 04 ноября 2010

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

не используются в MVC2 *. 1003 * *1004*.

5 голосов
/ 06 ноября 2010

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

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

1 голос
/ 04 ноября 2010

ASP.Net имеет руководство по кэшированию вывода для MVC .

Частичное (он же Donut) кэширование , которое будет работать для MVC2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...