2012-01-19 3 views
2

У меня есть два разных вида, которые составляют более 500 частичных представлений, каждый из которых имеет общий частичный вид. Хороший дизайн говорит мне, что я должен оставить частичный вид, где он есть, и ссылаться на него из обоих вышележащих представлений, чтобы предотвратить дублирование кода. К сожалению, производительность страдает - копирование частичного представления в каждом из двух других представлений дает улучшение в 300 мс.ASP MVC Компиляция-время включает частичный вид

В любом случае, я могу включить частичный вид в вид сверху, используя преимущества производительности, не используя фактический вызов Partial(), в то же время не имея необходимости поддерживать дублирующий код? Примечание. Я понимаю, что я мог бы написать какое-то дополнение VS, которое скопирует код вставки, но я ищу другие варианты ...

+2

Хороший дизайн говорит ** мне ** не имеют более 500 частичных просмотров ... **: -) ** – gdoron

+0

Я бы с этим согласился! Несмотря на это, у меня нет большого выбора в этом случае. –

+2

Являются ли вызовы RenderPartial() в цикле? Если да, то лучше переместить итерацию в Partial и сделать как можно меньше RenderPartial() вызовов. Вы также можете подумать о создании помощника HTML для частичного тестирования. Также проверяйте вещи в режиме «Release», поскольку HtmlHelper.RenderPartial() не кэширует маршрут во время работы Debug. – IUnknown

ответ

3

Вещи, чтобы попробовать, что может улучшить производительность:

  • Использование @{Html.RenderPartial("_foo");} вместо @Html.Partial("_foo") включать частичное
  • Всегда сделать свой бенчмаркинга в режиме выпуска. Множество оптимизаций и кэширования выполняется ASP.NET MVC в отличие от режима Debug.

Если предыдущие 2 предложения не дали требуемой производительности, вы можете попробовать заменить частичный HTML-помощник, который будет генерировать фрагмент HTML. Это может работать, если HTML частичного не очень сложный.

+0

Я создаю релиз, а оптимизация RenderPartial ничего не сделала. Однако я сделаю это в HTML-помощнике. Благодарю. –

0

Я собираюсь встречаться здесь, но вы рассмотрели использование server side include для ввода кода частичного представления, а не для вызова его? У меня нет абсолютно никаких доказательств, эмпирических или субъективных, что это будет быстрее. Просто что-то стоит попробовать.

+0

Видимо, бритва не поддерживает серверную часть. http://stackoverflow.com/questions/5314476/how-do-you-include-html-or-asp-file-using-razor –

Смежные вопросы