Способы обхода кэширования всей страницы в ASP.NET MVC - PullRequest
4 голосов
/ 02 мая 2009

В настоящее время атрибут OutputCache в ASP.NET MVC имеет огромный недостаток. Если вы хотите кэшировать части вашего сайта, вы должны использовать обходной путь из-за ограничения конвейера ASP.NET, на который полагается MVC.

Допустим, у вас есть страница, на которой есть модуль статистики, который вы видите через RenderAction, и вы не можете кэшировать только эту часть страницы из коробки.

У меня вопрос: какие пути вы нашли, чтобы обойти это ограничение, которые изящны и просты в использовании? Я лично нашел 2 из них, и я не особенно доволен. Хотя они работают, они, кажется, просто чувствуют себя нехорошо, создавая приложение вокруг них.

Решение 1 - Субконтроллеры http://mhinze.com/subcontrollers-in-aspnet-mvc/

Решение 2 - Частичные запросы http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

Так что, если у вас есть другое решение или, может быть, вы даже элегантно использовали одно из этих решений, я бы хотел получить несколько идей о дизайне и / или использовании.

Ответы [ 3 ]

4 голосов
/ 03 мая 2009

Я сделал это с вариантом 2 (используя Html.RenderAction) с довольно хорошим успехом. Я также создал различные базовые классы для своих контроллеров, один из которых кэширует, а другой нет, поэтому я помещаю все свои кэшированные действия в одно место. Я делаю это не очень часто, поэтому не так уж плохо изолировать эти действия. Благодаря комбинации кэширования и фильтра сжатия GZip, который я написал, я получаю довольно блестящую производительность из MVC.

4 голосов
/ 03 мая 2009

В некоторых случаях лучше вообще не использовать функцию ASP.NET OutputCache. Вместо этого используйте кэширование на уровне вашего бизнеса / сервиса с дополнительным сжатием gzip. Иногда эта комбинация даже быстрее, чем полное кэширование вывода.

1 голос
/ 03 мая 2009

Как насчет использования jQuery для загрузки некоторых областей (div и т. Д.) Через ajax. Затем вы можете кэшировать различные области как полные запросы с различной степенью детализации.

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