Ответ 1
Нет необходимости делать это во время выполнения. Потому что это можно сделать во время компиляции.
Подробности: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html
Каким образом мы можем уменьшить размер ответа HTML, отправленного приложением asp.net?
Я использую элементы управления, которые не принадлежат мне, и производит вывод с пробелами. Я заинтересован в том, чтобы минимизировать весь вывод HTML на странице так же, как и Google (см. Источник www.google.com), чтобы улучшить время.
Существуют ли какие-либо классы Utility для ASP.NET, которые могут сделать это для меня?
Нет необходимости делать это во время выполнения. Потому что это можно сделать во время компиляции.
Подробности: http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html
Попробуйте HTTP-модуль, как описано здесь: http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20
Для платформы Microsoft.NET существует библиотека, называемая WebMarkupMin, которая производит минимизацию HTML-кода. Для каждой структуры ASP.NET имеет свой собственный модуль:
Документация доступна по адресу http://webmarkupmin.codeplex.com/documentation
Я хочу прокомментировать предложение Thorn (но я новичок в переполнении стека).
Связанный код (omari-o.blogspot.com) не поддерживает MVC4, и хотя код является открытым исходным кодом, его невозможно легко обновить из-за изменений торможения между MVC3 и MVC4.
Во время выполнения могут быть помечены пробелы, написанные на результат http, только разработчик реального сайта может это знать. Таким образом, статическая минимизация файлов шаблонов (aspx) вообще не является надежной. Динамическая минимизация, предложенная gius, должна использоваться, чтобы гарантировать правильное удаление пробелов, и, к сожалению, это приведет к затратам на вычисление времени выполнения. Если код динамически записывает пробелы на выход, его нужно будет удалить динамически.
Принятый ответ не работает с MVC 4, так что вот аналогичная библиотека, которая минимизирует время сборки https://github.com/jitbit/HtmlOptimizerMvc4
Просто добавив еще один вариант, который я не вижу здесь, это тот, который мне рекомендовали, используя:
Инструмент командной строки html minifier
Однако существует проблема с помощью этого инструмента: он оставляет комментарии к одной строке (//), что вызывает проблемы для разбора Razor, поскольку один комментарий строки помещается в блок С#, например следующее:
@{
...
...
// anything
...
}
приведет к тому, что выходной сигнал минимизации остальной части строки, начиная с этой точки, будет игнорироваться синтаксическим анализатором Razor, что, таким образом, вызовет ошибку, указав там, что не может найти закрытие "}" для блока.
Моим обходным решением этой проблемы было полностью удаление этих комментариев из вывода. Этот способ работает. Для этого просто удалите RegexOptions.SingleLine из строки 145:
htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);