Использование ELMA на медленных Интернет-каналах

Настройка сжатия данных на серверной части. IIS + gzip

Если у сервера, на котором установлена ELMA, медленный интернет-канал, то можно использовать сжатие данных с помощью библиотеки gzip, которая входит в состав пакета MS FrameWork. Речь идет о случае, когда ELMA установлена на веб-сервер IIS. 

Разница сжатия файлов между IIS 6 и IIS 7

IIS 6 позволяет выполнять сжатие файлов по типам этих самых файлов.

В IIS 7 ситуация несколько иная. Вместо возможности сжатия файлов по типам, сжатие производится по MIME-типам. Все это можно сделать из программы IIS Manager, либо изменить конфигурационный файл (web.config) сайта и конфигурационный файл самого IIS, либо через скрипты (appcmd.exe). В IIS 7 есть возможность временно запретить сжатие файлов, если процессор на сервере загружен.

Обе версии IIS 6 и IIS 7 по-прежнему имеют 11 возможных уровней сжатия (от 0 (выключен) до 10).

Сжатие в IIS

Сжатие бывает статическое и динамическое.

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

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

Настройки сервера

На вкладке Сжатие Диспетчера служб IIS можно включить динамическое и статическое сжатие, а также настроить статическое сжатие:

  • задать минимальный размер файлов, больше которого будет работать сжатие;
  • указать папку, куда сжатые файлы сохранять;
  • ввести ограничение объема на диске для сжатых файлов.

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

По умолчанию, в IIS модуль сжатия динамического содержимого не установлен. Поэтому предварительно потребуется его установка.

Также применение модуля сжатия динамического содержимого может повысить нагрузку на процессор и снизить производительность сервера, что вполне логично, так все файлы, страницы, ответы и т. д. будут сжиматься каждый раз при запросе. Поэтому так или иначе это определенным образом скажется на производительности системы.

Включение модуля сжатия динамического содержимого на базе Widows Server 2008 R2 Enterprise

Чтобы включить модуль сжатия динамического содержимого на базе Windows Server 2008 R2 Enterprise, выберите команду Пуск – Администрирование – Диспетчер Сервера. Затем необходимо выбрать: Роли – Веб-сервер (IIS) и добавить службу ролей.

После нажмите Далее и завершите ход установки.

Включение модуля сжатия динамического содержания на базе Windows 7

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

 

После этого нажмите кнопку Ок и установите компонент.

Настройка модуля сжатия

Для настройки модуля сжатия необходимо открыть Диспетчер служб IIS – Редактор конфигураций.

Затем необходимо перейти в раздел: system.webServer/htttpCompression

Теперь необходимо настроить динамические типы (dynamicTypes). В IIS 7 настройка производится по MIME-типам, поэтому необходимо внести нужные MIME-типы. Ознакомиться с MIME-Type можно здесь или здесь.

 

При добавлении заполняется только 2 поля: enabled и mimeType, после этого закрывается редактор коллекций, и в окне редактора конфигураций необходимо нажать Применить (на вкладке Действия). После применения автоматически сформируется путь записи.

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

 

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

Пример работы gzip+IIS

На данном рисунке видно, что во время текущей сессии процесс chrome.exe (браузер Google Chrome) обработал 91 запрос, отправил 85,85 кб, принял 26,78 кб, прошедшее время – 123, 928 с.

 

Работа без компрессии

На данном рисунке, видно, что во время текущей сессии процесс chrome.exe (браузер Google Chrome), обработал 5 запросов, отправил 4,44 кб, принял 57,41 кб, прошедшее время 7, 957 с.

В процессе тестирования выполнялось одно и то же действие – авторизация пользователя в ELMA.

 

Компрессоры

Toonel.net

Клиентская часть приложения, написанного на Java, представляет собой локальный прокси-сервер. Прописав его в настройках браузера, мы переадресуем трафик клиентской части toonel.net, которая через специальный сервер запрашивает нужные данные и получает их в сжатом виде. Распаковав информацию, toonel.net возвращает ее обратно браузеру в привычном для него виде. Аналогичным образом сжимать можно и другие TCP/IP протоколы: FTP, SMTP и т.д. В среднем, с использованием toonel.net потребляется в 2-2.5 раза меньше трафика, чем при прямом коннекте. Данный проект является бесплатным, однако серверы публичные, поэтому могут быть недоступны.

На вкладке Web, мы можем установить значения Gif quality и JPEG quality. На данном рисунке страница загружена со значениями gif quality = low, jpeg quality = 10%.

Кэширование DNS-запросов

Кэширование DNS-запросов, эффект от которого особенно сильно заметен на медленных соединениях. В случае GPRS-коннекта DNS-резолвинга может занять секунду, а то и больше. Достаточно знать IP-адреса нужных хостов. Для этого нужно провести анализ с помощью программы  namebench. Программа очень проста в использовании достаточно запустить и нажать Start, после этого мы получим отчет о результатах анализа.

Дальше нам понадобится ускорить обработку dns-запросов с помощью программы acrylic.

После ее установки вам необходимо открыть файл Edit Configuration File. Здесь требуется прописать ip-адрес уже проверенных нами dns-серверов (которые оказались наиболее быстрыми).

Edit Configuration File

PrimaryServerAddress= вводим ip первичного dns сервера;

SecondaryServerAddress= вводим ip вторичного dns сервера;

TertiaryServerAddress= ip третьего dns сервера;

QuaternaryServerAddress= ip четвертого dns сервера;

Затем запускаем Restart Acrylic Service. Сервис настроен, запущен и готов к работе. После чего необходимо зайти в настройки сетевых параметров (Win+R -> ncpa.cpl), заходим в свойства нужного сетевого адаптера и в поле DNS адреса указываем 127.0.0.1. Другие dns-сервера удаляем. Таким образом, все ответы, которые мы получаем на наши запросы, кешируются. То есть, если мы запросим эти данные еще раз, то получим мгновенный ответ, который уже записан на нашем ПК.

Браузеры

Google Chrome имеет мощную систему настроек, некоторые из них могут немного ускорить его производительность. Откройте Параметры и перейдите на вкладку Расширенные. Здесь можно включить опцию Предсказывать сетевые действия для ускорения загрузки страниц, а также отключить Автоматически отправлять в Google статистику использования и отчеты о сбоях. Если вы опытный пользователь и не боитесь фишинговых подделок, то лучше выключить пункт Включить защиту от фишинга и вредоносного ПО, что несколько ускорит загрузку страниц благодаря отсутствию необходимости проверять безопасность каждого адреса.

 

Как работает опция Предсказывать сетевые действия для ускорения загрузки страниц:

Браузер Chrome, встречая инструкцию prerender, создает невидимый таб, и начинает загружать в нем страницу, со всеми скриптами (которые он даже исполняет), картинками и т. д. Если пользователь действительно переходит по предсказанному адресу, текущий таб заменяется на этот невидимый, и он оказывается на уже загруженной — или как минимум загружающейся — странице.
Firefox же всего лишь загружает html указанной страницы, все внешние ресурсы начинают загружаться только при переходе.

В Firefox и Chrome для этих целей можно использовать практически любое доступное расширение.