ЖАНРЫ

Шрифт:

Сжатие данных

Другим методом оптимизации производительности является сжатие данных для уменьшения размера потока данных между клиентом и сервером. В случаях, когда клиент имеет малую пропускную способность своего интернет-соединения, такой вид оптимизации будет играть существенную роль.

Сервер IIS, на котором работают приложения ASP.NET MVC, предлагает комплексный механизм, позволяющий на лету сжимать исходящие данные из сервера и принимать сжатые данные от клиента. Для включения этого механизма в IIS7 можно воспользоваться опцией Compression, в которой можно включить

сжатие как статического (скрипты, CSS-стили), так и динамического контента.

В случае, если включение динамического сжатия недоступно, следует включить его поддержку через панель добавления инструментов Windows (рис. П2.1).

Сжатие данных, передаваемых между клиентом и сервером, работает следующим образом:

1. Клиент отправляет запрос серверу, в заголовке которого может передать информацию о том, что он поддерживает сжатие данных. Этот заголовок передается следующим образом: Accept-Encoding: gzip, deflate.

2. IIS-сервер, получив такой заголовок, уверен, что клиент может обрабатывать сжатые данные, поэтому, если разработчик настроил сервер на сжатие данных, результат запроса будет сжат с помощью алгоритма GZip или Deflate и отправлен клиенту со следующим опознавательным заголовком: Content-Encoding: gzip.

3. Клиентский браузер, получив данные с заголовком Content-Encoding: gzip, понимает, что данные сжаты и, используя свои встроенные механизмы, распаковывает их, чтобы отобразить результат запроса пользователю.

4. При разработке приложения и работе с механизмом сжатия на сервере IIS следует учитывать, что не все браузеры или другие клиентские приложения, которые отправляют запросы, могут поддерживать сжатие данных. Существует целый ряд клиентов, например, многие мобильные браузеры, которые не поддерживают сжатие передаваемых данных.

Уменьшение размера передаваемых файлов

Часто даже использование сжатия данных посредством сервера IIS не приносит требуемого результата по снижению объема передаваемых данных. Кроме того, сжатие не работает и не дает никакого эффекта с клиентами, которые его не поддерживают. В таких случаях требуется обратить внимание на сами передаваемые данные, в особенности данные из статических файлов: JavaScript-скриптов, CSS-стилей, файлов изображений и др.

Уменьшение JavaScript

Для уменьшения размера JavaScript-файлов существует целый ряд инструментов. Работа этих инструментов основана на том факте, что чаще всего JavaScript-файлы передаются в том же самом виде, в котором созданы разработчиком. То есть содержат массу символов разделителей, табуляции, переводов строк и комментариев, которые помогают разработчику лучше понимать код, но совершенно не нужны, когда речь идет о передаче от клиента к серверу.

Одним из таких инструментов по уменьшению размера JavaScript-файлов является Microsoft Ajax Minifier.

Примечание

Инструмент Microsoft Ajax Minifier бесплатен и может быть свободно скачен по адресу:

http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488.

*************************

Microsoft Ajax Minifier

поставляется в виде утилиты командной строки вместе с документацией и отдельной сборкой, которая позволяет использовать функционал Microsoft Ajax Minifier в ваших собственных приложениях.

Использовать Microsoft Ajax Minifier просто. Например, следующая команда сожмет содержимое файла inputfilejs:

ajaxmin inputfile.js

Для вывода результата сжатия в другой файл потребуется добавить параметр -o:

ajaxmin inputfile.js -o outputfile.js

Кроме того, Microsoft Ajax Minifier имеет еще целый ряд параметров для тонкой настройки механизма сжатия JavaScript и представления результата. Ознакомиться со всеми доступными параметрами можно, запустив без параметров приложение ajaxmin из командной строки.

Минимизация и сжатие JavaScript-файлов может значительно сократить размер передаваемых от сервера к клиенту данных. Так, например, минимизация исходного кода библиотеки jQuery позволяет сократить ее размер с 125 до 53 Кбайт.

Уменьшение CSS

JavaScript-файлы, как и файлы со стилями CSS, могут быть сжаты для уменьшения размера передаваемых данных. Для решения задачи минимизации CSS-файлов существует ряд инструментов, самый популярный из которых CSSTidy.

Примечание

CSSTidy можно скачать по адресу http://csstidy.sourceforge.net/.

***********************

Использование CSSTidy по заверениям и тестам авторов может дать в среднем 33 % сжатия файлов со стилями. Для управления работой инструмента у него присутствует ряд параметров. Для минимизации файла достаточно указать его имя как параметр:

csstidy mycssfile.css

Для записи результата в другой файл необходимо указать имя выходного файла в виде второго параметра:

csstidy mycssfile.css myoutputfile.css

Остальные параметры можно получить, запустив csstidy без параметров.

Уменьшение изображений

Поскольку изображения — это важная часть почти каждого веб-сайта в Интернете, уменьшение размера изображений может принести значительный прирост производительности при передаче данных от сервера к клиенту.

Для оптимизации разных типов изображений можно воспользоваться разнообразными инструментами:

? для уменьшения файлов изображений типа PNG без потери качества можно использовать популярный инструмент pngcrush (адрес проекта в Интернете;

? для уменьшения и оптимизации файлов формата JPEG используется другой инструмент — jpegtran (скачать можно по адресу, который позволяет, используя свойства JPEG, достигать более высокого уровня сжатия изображения;

? для оптимизации GIF-изображений можно первоначально перевести их в PNG-формат с помощью инструмента gif2png (скачать можно по адресу. В случае, когда GIF-файлы анимированы, их можно оптимизировать с помощью инструмента GIFsicle (скачать можно по адресу.

Поделиться с друзьями: