Архив

Posts Tagged ‘Клиентская оптимизация’

Бандл… Пара-пара-па хэй! или Bundle Transformer шагает по планете

Упоминания о Bundle Transformer в Интернете

Несколько дней назад я обнаружил, что мой Twitter-аккаунт @taritsyn был взломан и через него в течение двух недель рассылался спам на русском и украинском языке. Я был очень удивлен, что стал мишенью для спамеров, т.к. мой твиттер читает сравнительно небольшое количество подписчиков.

Я решил выяснить, почему мной заинтересовались спамеры, и после нескольких часов гугления, понял, что мой Open Source-проект Bundle Transformer стал пользоваться популярностью. Я обнаружил большое количество упоминаний о Bundle Transformer в блогах и твиттер-лентах зарубежных технических специалистов. Среди этих упоминаний есть и серьезные технические статьи:

Тег «Далее»

WebMarkupMin HTML Minifier – современный HTML-минимизатор для платформы .NET

Логотип WebMarkupMin

В начале 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, в которые были внесены изменения в версии 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

Логотип MoscowJS

2 ноября в офисе компании «Яндекс» прошла 8-я встреча московского сообщества JavaScript-разработчиков MoscowJS. Мне посчастливилось выступить на этом мероприятии с докладом о своем продукте — Bundle Transformer.

Тег «Далее»

Вышел Bundle Transformer 1.6.5

Логотипы библиотек Bundle Transformer, в которые были добавлены изменения в версии 1.6.5

Основным нововведением в новой версии Bundle Transformer стала поддержка языка TypeScript. Кроме того, были внесены изменения в ядро продукта и в следующие модули: BundleTransformer.MicrosoftAjax, BundleTransformer.Yui и BundleTransformer.Csso.

Рассмотрим основные нововведения данной версии:

Тег «Далее»

Вышел Bundle Transformer 1.6.2 или что изменилось за полгода?

Логотип Bundle Transformer

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:

  1. Объявляем и регистрируем Bundle`ы;
  2. Используем 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

Логотип Bundle Transformer

Одним из наиболее популярных нововведений в 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.

Содержание

  1. Сжатие JS- и CSS-файлов
  2. Менеджеры ресурсов

В предыдущей статье мы научились производить минимизацию JS- и CSS-файлов в Visual Studio.

В данной статье мы рассмотрим другие аспекты клиентской оптимизации, связанные с JS- и CSS-файлами и решаемые с помощью менеджеров ресурсов (asset managers). Перечислим рекомендации команды Exceptional Performance, которые можно реализовать с помощью менеджеров ресурсов:

  1. Выносите JavaScript и CSS во внешние файлы
  2. Размещайте таблицы стилей в начале страницы
  3. Размещайте скрипты в конце страницы
  4. Используйте CDN
  5. Уберите повторяющиеся скрипты
  6. Уменьшите количество HTTP-запросов (с помощью объединения JS- и CSS-файлов)
  7. Добавьте HTTP-заголовок Expires или Cache-Control
  8. Сжимайте содержимое с помощью GZIP
  9. Настройте ETag

На основе перечисленных выше рекомендаций сформулируем требования, которым должен соответствовать менеджер ресурсов:

  1. Регистрировать ресурсы (файлы) в шаблонах (мастер-страницах) и представлениях
  2. Предотвращать дублирование ресурсов
  3. Выбирать нужные версии ресурсов в зависимости от режима работы веб-приложения (отладка или релиз)
  4. Задавать URL ресурса, размещенного на CDN, в качестве альтернативного пути к ресурсу
  5. Объединять код ресурсов в один файл
  6. Минимизировать ресурсы «на лету» (в нашем случае необязательное требование)
  7. HTTP-хэндлер, с помощью которого выводятся обработанные ресурсы, должен добавлять HTTP-заголовок Expires или Cache-Control
  8. HTTP-хэндлер должен сжимать ресурсы с помощью GZIP/Deflate
  9. HTTP-хэндлер должен поддерживать ETag

Тег «Далее»