ASP.NET MVC 2 пользовательское управление кэшированием - PullRequest
0 голосов
/ 16 января 2010

Я недавно решил опробовать MVC 2 и, исходя из опыта веб-форм, у меня возникли небольшие проблемы, пытаясь найти лучшее практическое решение для кэширования данных, предоставляемых для частичного просмотра (пользовательский контроль).

В моем приложении webforms у меня есть страница AccountSummary.aspx, которая имеет элемент управления Booking.ascx. Booking.ascx имел кэширование вывода 300 секунд, и в Page_Load AccountSummary.aspx я использовал для проверки, был ли элемент управления пустым, и если нет, передавал ему UserId. Затем в коде позади Booking.ascx я использовал вызов доступа к данным, чтобы получить все заказы, таким образом, запрос на выбор был сделан не чаще, чем раз в 300 секунд.

Я бы хотел добиться того же в MVC2, но, похоже, я не могу найти лучший способ добиться этого, потому что все примеры в Интернете, кажется, передают данные пользовательскому элементу управления в вспомогательном методе RenderPartial HTML ( чего я не хочу, потому что при каждой загрузке страницы мне нужно будет передавать информацию о бронировании, которая убьет мою базу данных!)

Пожалуйста, сообщите: -)

Приветствия, А.

1 Ответ

4 голосов
/ 18 января 2010

В ASP.NET MVC 2 нет простого механизма кэширования на уровне представления.

Есть несколько хитрых приемов для использования кэширования вывода в ASP.NET, таких как Кеширование пончиков и Кэширование пончиковых , но оба они нарушают MVCшаблон (например, путем перетекания DAL в представления) очень очень сложен для получения правильного , а демонстрирует практически недокументированное поведение .(См. Комментарии в сообщениях блога и других сообщениях здесь на SO для получения дополнительной информации.)

Короткий ответ таков: кэширование на уровне представления (т.е. кэширование частичного представления или представления,в отличие от метода действия) - это поездка, в которую вы не хотите отправляться , если вы новичок в ASP.NET MVC.Следовательно, вместо этого вы должны кэшировать ваш DAL или методы действий.

В вашем примере у вас может быть OutputCacheAttribute для метода действия, который возвращает частичное представление со списком бронирования, или вы можете использовать System.Web.Cache для кэширования списка бронирования при получении его в вашем DAL.

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