Минимизировать вывод Html приложения ASP.NET - PullRequest
35 голосов
/ 01 ноября 2008

Каким образом мы можем уменьшить размер ответа HTML, отправляемого приложением asp.net?

Я использую элементы управления, которые мне не принадлежат, и выводит их с пробелами. Я заинтересован в минимизации всего вывода HTML страницы так же, как это делает Google (см. Источник www.google.com), чтобы улучшить время.

Есть ли какие-либо классы утилит для ASP.NET, которые могут сделать это для меня?

Ответы [ 6 ]

32 голосов
/ 27 января 2010

Нет необходимости делать это во время выполнения. Потому что это можно сделать во время компиляции.

Подробности: http://omari -o.blogspot.com / 2009/09 / aspnet-white-space-cleaning-with-no.html

19 голосов
/ 01 ноября 2008

Попробуйте модуль HTTP, как описано здесь: http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20

10 голосов
/ 16 сентября 2014

Для платформы Microsoft .NET существует библиотека под названием WebMarkupMin , которая производит минимизацию кода HTML. Для каждого ASP.NET framework есть свой модуль:

  • ASP.NET Core - WebMarkupMin.Web . Реализован как модуль HTTP, поэтому он может работать с любым фреймворком. Подходит для использования в среде ASP.NET Web Pages (Razor).
  • ASP.NET MVC - WebMarkupMin.Mvc
  • Веб-формы ASP.NET - WebMarkupMin.WebForms

Документация доступна по адресу - http://webmarkupmin.codeplex.com/documentation

6 голосов
/ 22 июля 2013

Я хочу прокомментировать предложение Торна (но я новичок в переполнении стека).

  1. Связанный код (omari-o.blogspot.com) не поддерживает MVC4, и хотя код является открытым исходным кодом, его нельзя легко обновить из-за изменений торможения между MVC3 и MVC4.

  2. Могут быть пробелы, записанные в результат http во время выполнения, это может знать только разработчик реального сайта. Таким образом, статическая минимизация файлов шаблонов (aspx) совсем не защищена от ошибок. Динамическая минификация, предложенная gius, должна использоваться для гарантии правильного удаления пробелов, и, к сожалению, это повлечет за собой затраты на вычисление во время выполнения. Если код динамически записывает пробелы в вывод, его необходимо будет удалить динамически .

3 голосов
/ 20 ноября 2014

Принятый ответ не работает с MVC 4, поэтому вот аналогичная библиотека, которая уменьшается во время сборки https://github.com/jitbit/HtmlOptimizerMvc4

2 голосов
/ 24 февраля 2015

Просто добавив еще один вариант, которого я не вижу в списке, который я рекомендовал использовать:

Инструмент командной строки для минимизатора HTML

Использование: здесь и здесь

Однако с этим инструментом возникает проблема : он оставляет однострочные (//) комментарии и вызывает проблемы при разборе Razor, поскольку однострочный комментарий помещается в блок C #, как следующее:

@{
  ... 
  ...
  // anything
  ...
}

приведет к тому, что анализатор Razor будет игнорировать вывод остатка строки минификации с этого момента, что вызовет ошибку, сообщающую, что он не может найти закрывающий "}" для блока.

Моим решением этой проблемы было полное удаление этих комментариев из вывода. Так работает. Для этого просто удалите RegexOptions.SingleLine из строки 145:

htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...