Бандл… Пара-пара-па хэй! или Bundle Transformer шагает по планете
Несколько дней назад я обнаружил, что мой Twitter-аккаунт @taritsyn был взломан и через него в течение двух недель рассылался спам на русском и украинском языке. Я был очень удивлен, что стал мишенью для спамеров, т.к. мой твиттер читает сравнительно небольшое количество подписчиков.
Я решил выяснить, почему мной заинтересовались спамеры, и после нескольких часов гугления, понял, что мой Open Source-проект Bundle Transformer стал пользоваться популярностью. Я обнаружил большое количество упоминаний о Bundle Transformer в блогах и твиттер-лентах зарубежных технических специалистов. Среди этих упоминаний есть и серьезные технические статьи:
WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET
В начале 2012 года я работал над серией статей о клиентской оптимизации в ASP.NET MVC для журнала MSDeveloper.RU. Всего было опубликовано 2 статьи: «Сжатие JS- и CSS-файлов» и «Менеджеры ресурсов», но в моих планах было написать еще 2 статьи: одну про оптимизацию графики, а вторую про минимизацию HTML-разметки и GZIP/Deflate-сжатие (далее просто HTTP-сжатие). К сожалению, эти планы не удалось воплотить в жизнь из-за нехватки свободного времени (в тот момент, я запускал проект Bundle Transformer) и последовавшего закрытия журнала.
Но недавно я решил вернуться к теме оптимизации HTML-разметки. После небольшого исследования я понял, что под .NET практически не существует полноценных HTML-минимизаторов. Все существующие .NET-решения производят лишь 2 операции: удаление ненужных пробельных символов и удаление HTML-комментариев, из-за чего они очень сильно проигрывают решениям с других платформ. Поэтому я решил написать собственный HTML-минимизатор для .NET, о котором и пойдет речь в данной статье.
Эволюция HTML-минимизаторов
Прежде чем приступить к описанию своего проекта, я хотел бы немного рассказать о почти 15-летней истории HTML-минимизации и эволюции программный средств, автоматизирующих данный процесс.
Вопреки расхожему мнению, техники минимизации HTML-кода появились намного раньше, чем аналогичные техники для JavaScript. Уже в конце 1998 года Артемий Лебедев в 17-м параграфе ководства «Паранойя оптимизатора» описывал некоторые техники минимизации HTML-кода.
Вышел Bundle Transformer 1.6.10
Новая версия Bundle Transformer характеризуется следующими изменениями: большая часть сборок теперь подписана; в ядре, были исправлены ошибки, возникавшие при обработке путей; были обновлены некоторые модули (BundleTransformer.SassAndScss, BundleTransformer.CoffeeScript, BundleTransformer.TypeScript, BundleTransformer.MicrosoftAjax, BundleTransformer.Yui, BundleTransformer.UglifyJs, BundleTransformer.Csso и BundleTransformer.WG) и создана новая версия демонстрационного сайта ASP.NET Web Pages.
Рассмотрим основные нововведения данной версии:
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в среде ASP.NET» с MoscowJS 8th
2 ноября в офисе компании «Яндекс» прошла 8-я встреча московского сообщества JavaScript-разработчиков MoscowJS. Мне посчастливилось выступить на этом мероприятии с докладом о своем продукте — Bundle Transformer.
Вышел Bundle Transformer 1.6.5
Основным нововведением в новой версии Bundle Transformer стала поддержка языка TypeScript. Кроме того, были внесены изменения в ядро продукта и в следующие модули: BundleTransformer.MicrosoftAjax, BundleTransformer.Yui и BundleTransformer.Csso.
Рассмотрим основные нововведения данной версии:
Вышел Bundle Transformer 1.6.2 или что изменилось за полгода?
Bundle Transformer – это разработанное мной модульное расширение для Microsoft ASP.NET Web Optimization Framework (другие названия: ASP.NET Bundling and Minification, System.Web.Optimization, Microsoft.Web.Optimization и ASP.NET Optimization – Bundling). В апреле этого года я уже делал подробный обзор возможностей Bundle Transformer, но за это время данный продукт очень сильно изменился. Поэтому я решил написать данный обзор и рассказать об основных изменениях, которые произошли в Bundle Transformer за прошедшие полгода.
Добавляем Bundling and Minification на сайт ASP.NET Web Pages (Перевод)
Представляю вашему вниманию перевод статьи Рика Андерсона (Rick Anderson) «Adding Web Optimization to a Web Pages Site».
При добавлении ASP.NET Bundling and Minification (далее B/M) на сайт ASP.NET Web Pages мы следуем тому же рецепту, что и в ASP.NET MVC и Web Forms:
- Объявляем и регистрируем Bundle`ы;
- Используем Bundle`ы в коде наших представлений.
Данная статья описывает базовые принципы использования B/M на сайте ASP.NET Web Pages. Для получения общей и более подробной информацией о B/M смотрите мой учебник по Bundling and Minification. Вы также можете прочитать об использовании B/M c ASP.NET MVC — здесь, и c ASP.NET Web Forms — здесь.
Добавляем Bundling and Minification в приложение ASP.NET Web Forms (Перевод)
Представляю вашему вниманию перевод статьи Рика Андерсона (Rick Anderson) «Adding Bundling and Minification to Web Forms».
Мой учебник по Bundling and Minification обеспечивает хорошее введение в возможности и основные преимущества ASP.NET Bundling and Minification (далее B/M). Вы должны прочитать это руководство, чтобы ознакомиться с основными возможностями данного продукта. В отличие, от моего руководства по B/M, которое посвящено использованию B/M в ASP.NET MVC, эта статья будет посвящена использованию B/M в связке с ASP.NET Web Forms.
Bundle Transformer – модульное расширение для ASP.NET Bundling and Minification
Одним из наиболее популярных нововведений в ASP.NET MVC 4 и ASP.NET 4.5 стала библиотека, производящая минимизацию и объединение кода CSS- и JavaScript-файлов — ASP.NET Bundling and Minification (другие названия: System.Web.Optimization, Microsoft.Web.Optimization и ASP.NET Optimization — Bundling). Если вы еще не знакомы с данным продуктом, то рекомендую прочитать статью Дэвида Хайдена «ASP.NET MVC 4 Bundling and Minification of CSS and JavaScript» и посмотреть выступление Скотта Гатри «A look at ASP.NET MVC 4». Во многом ASP.NET Bundling and Minification напоминает уже присутствующие на рынке продукты для проведения клиентской оптимизации: Combres и Cassette.
Клиентская оптимизация в ASP.NET MVC 3. Менеджеры ресурсов
Первоначально данная статья была опубликована в февральском номере журнала MSDeveloper.RU.
Содержание
- Сжатие JS- и CSS-файлов
- Менеджеры ресурсов
В предыдущей статье мы научились производить минимизацию JS- и CSS-файлов в Visual Studio.
В данной статье мы рассмотрим другие аспекты клиентской оптимизации, связанные с JS- и CSS-файлами и решаемые с помощью менеджеров ресурсов (asset managers). Перечислим рекомендации команды Exceptional Performance, которые можно реализовать с помощью менеджеров ресурсов:
- Выносите JavaScript и CSS во внешние файлы
- Размещайте таблицы стилей в начале страницы
- Размещайте скрипты в конце страницы
- Используйте CDN
- Уберите повторяющиеся скрипты
- Уменьшите количество HTTP-запросов (с помощью объединения JS- и CSS-файлов)
- Добавьте HTTP-заголовок
Expires
илиCache-Control
- Сжимайте содержимое с помощью GZIP
- Настройте
ETag
`и
На основе перечисленных выше рекомендаций сформулируем требования, которым должен соответствовать менеджер ресурсов:
- Регистрировать ресурсы (файлы) в шаблонах (мастер-страницах) и представлениях
- Предотвращать дублирование ресурсов
- Выбирать нужные версии ресурсов в зависимости от режима работы веб-приложения (отладка или релиз)
- Задавать URL ресурса, размещенного на CDN, в качестве альтернативного пути к ресурсу
- Объединять код ресурсов в один файл
- Минимизировать ресурсы «на лету» (в нашем случае необязательное требование)
- HTTP-хэндлер, с помощью которого выводятся обработанные ресурсы, должен добавлять HTTP-заголовок
Expires
илиCache-Control
- HTTP-хэндлер должен сжимать ресурсы с помощью GZIP/Deflate
- HTTP-хэндлер должен поддерживать
ETag
`и