Подтвердить что ты не робот

Minify Html выход приложения ASP.NET

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

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

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

4b9b3361

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

Инструмент командной строки html minifier

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

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

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

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

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

htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);