Статьи Архив статей

Автор: Николай Мациевский aka sunnybear
Опубликована: 16 сентября 2010

Ускорение сайта «в 1 клик» — реальность

WEBO Site SpeedUp

С выходом новой версии WEBO Site SpeedUp (приложения для автоматического ускорения сайтов) — 1.3.0 — мы смогли, наконец, с уверенностью сказать: оно здесь. В смысле: идея автоматического ускорения сайтов реализована.

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

Немного истории

В 2009 году, после появления проекта с открытым кодом Web Optimizer (да-да, исходные коды продукта полностью открыты до сих пор), вплоть до декабря месяца шло активное формирование ядра продукта, было очень много промежуточных версий, функционал менялся прямо на глазах. В июне 2009 у продукта появился первый вменяемый интерфейс (основные его идеи были затем использованы в Мастере настройки, и автор интерфейса, fade, теперь работает с нами на постоянной основе).

Основные сложности с продуктом (кроме того, что он вообще сложный :) заключались в необходимости его настройки для каждого конкретного сайта (потому что ситуаций — миллионы, и продукт изначально не создавался для автономного анализа конфигурации сайта и »умного« его ускорения). На основе руководства по установке и настройке была создана онлайн-документация (Wiki, в .pdf-виде занимает несколько десятков страниц), а затем — и видео-руководства по настройке.

Но все это нас не спасло, и осень 2009 года превратилось в полное фиаско. Мы пришли к «обычным» пользователям (которые, может быть, даже термина »клиентская оптимизация« не знали) и предложили наш продукт. А он оказался слишком сложным для них. Но мы не остановились и пошли дальше.

За два месяца был полностью переработан интерфейс, и уже в декабре 2009 продукт получил абсолютно новый интерфейс и расширенную функциональность по настройке, а официальный его релиз состоялся в феврале этого года. И Web Optimizer (доступный до сих пор вплоть до версии 0.6.7) был переименован в WEBO Site SpeedUp.

Кроме того, мы продолжили внутреннюю интеграцию с известными платформами (потому что внешнее приложение, не имея доступа к API системы, не может эффективно кэшировать на сервере HTML-страницы и более грамотно обрабатывать HTML-вывод). Кроме существующих на конец 2009 года интеграций с WordPress, Joomla!, Drupal и Bitrix были добавлены CS-Cart, Magento, Netcat (в ближайших планах — UMI.CMS, MODx и пара других популярных систем). Но и этого нам показалось мало.

Контрольным выстрелом стала реализация концепции «умного» ускорения сайта на основе функционала продукта и анализа текущего серверного окружения, ситуации на сайте по производительности и клиентской составляющей — Мастер настройки. Теперь ускорение стало доступно буквально в 3 действия: установить продукт, перейти на страницу продукта и запустить Мастер настройки, включить подготовленную конфигурацию. Все.

Мастер настройки

Мастер настройки

Что лежит под красивыми картинками с забавными человечками? Во-первых, мы выписали алгоритм настройки продукта, которым сами пользуемся для ускорения сайтов клиентов. Это просто последовательное применение тех настроек, что уже есть в продукте.

Дальше было сложнее. Если посчитать изменение в стилях сайта достаточно просто — ведь можно сравнить вычисленные стили для нескольких (десятков) базовых элементов, и по ним принять решение, все ли в порядке с оптимизацией CSS, — то для JavaScript все сильно хуже. Функциональные тесты провести нельзя, но базовые вещи (отслеживание ошибок на странице при объединении / минимизации файлов) — можно. Тут ждал первый подвох: корректно, в силу стечения многих обстоятельств, алгоритм обнаружения JS-ошибок работает только в Firefox и IE (в основном, потому что есть обработчик window.onerror). В Opera / Webkit-браузерах такого добиться не удалось, поэтому в ряде случаев автоматика не срабатывает.

Дальше было еще пару сложностей (например, с определением корректности минимизации HTML или обнаружением известных шаблонов для отложенной загрузки), но они все были преодолены. Поэтому остальные части алгоритма (принятие решения о минимизации HTML, использовании data:URI / htaccess / отложенной загрузки JavaScript / множественных хостов) применяются совсем просто и тоже в автоматическом режиме. В ручную настройку мы вынесли пока только регулирование серверного кэширования (потому что понять логику работы сайта автоматически практически невозможно). Может быть, в будущем здесь появится еще пара-тройка вопросов.

В результате, Мастер настройки представляет из себя три шага:

  1. Автоматическая настройка. Измеряется текущая скорость сайта, применяются все известные методы оптимизации для CSS, JavaScript, HTML и полученный (ускоренный) вариант сайта сравнивается с исходный. Если что-то пошло не так, то оптимизация отключается.
  2. Ручная настройка. Сейчас это вопрос про серверное кэширование и список действий, которые не удалось провести в ходе автоматической настройки.
  3. Завершение настройки. Рассчитывается новая скорость сайта и полученное ускорение. Результирующую конфигурацию можно сохранить и сразу включить WEBO Site SpeedUp.

Очевидно, что данный подход хорошо работает только для сайтов, не использующий различное оформление / клиентскую логику в разных разделах. Но в этом случае возможна только ручная настройка (или донастройка) продукта. В будущем мы планируем сделать оптимизацию еще более «умной», чтобы учитывать и такие случае самостоятельно, без дополнительных вопросов к пользователю.

Список изменений

По сравнению с версией 1.2.0

  • Добавлен Мастер Настройки для проведения настройки ускорения сайта в автоматическом режиме.
  • Значительно улучшено серверное кэширование. В том числе, добавлены кэширующие движки (Memcached/APC/X-Cache), добавлена поддержка кэширования на системном уровне для WordPress, Joomla!, CS-Cart, Magento. Добавлена SQL-кэширование (WordPress / Joomla!).
  • Существенно улучшена поддержка CDN: добавлен инструмент для синхронизации файлов, добавлена автоматическая синхронизация (кроме сетей с FTP-доступом для загрузки файлов) для RackSpaceCloud.
  • WEBO Site SpeedUp теперь доступен как расширение для NetCat и Magento.
  • Пересмотрены размер и структура пакетов, теперь стало меньше файлов, а общий размер не увеличился. Это должно помочь при обновлениях / автоматической установке, когда сетевые задержки не дают продукту полностью загрузиться.
  • Добавлена возможность откатить версию продукта не тольно до последней стабильной, но и любой из доступных (в таком режиме доступны все версии, начиная с 1.2.0).
  • Добавлена поддержка большого количества рекламных блоков (для ненавязчивой загрузки), в том числе: Unruly Media, GoViral Network, Exoclick, Carpediem и нового формата OpenX.
  • Добавлено распознавание некоторых популярных шаблонов динамической загрузки, в том числе: Shadowbox и scriptaculous. И эффективное объединение JavaScript-файлов, подгружаемых динамически.
  • Добавлена поддержка тега base при разборе ресурсов.
  • Добавлена сборка Joomla! + WEBO Site SpeedUp в виде softaculous-пакета.
  • И огромное множество других улучшений в ядре, совместимости с серверными окружениями, системных плагинах, интерфейсе и локализации (добавлены итальянский и урду).

Лицензионная политика

Как мы уже объявляли, теперь продукт для домашних пользователей доступен абсолютно бесплатно. Если вы используете его на коммерческом сайте (т.е. таком, который направлен на извлечение прибыли), то необходимо приобрести лицензию (можно облегченную, 1800 рублей разово). В полную лицензию теперь включена расширенная техническая поддержка, и мы также предлагаем ускорение сайта «под ключ» на базе продукта (для тех, кому нужен гарантированный результат). Естественно, мы работаем по схеме «гарантированное ускорение с оплатой за результат». Отправить заявку можно здесь.

Также доступна SaaS-версия продукта, в которой все расширенные возможности тарифицированы, и можно платить в любом удобном графике, ускорение сайта при этом стоит порядка 100-200 рублей в месяц.

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

Наш сайт: www.webogroup.com
Раздел продукта: www.webogroup.com/home/site-speedup/
Страница загрузки: www.webogroup.com/home/download/
Онлайн-документация: code.google.com/p/web-optimizator/w/list
Или PDF: code.google.com/p/web-optimizator/downloads/detail?name=webo.site.speedup.userguide.ru.pdf
Наш блог (на английском): blog.webogroup.com/
И наш twitter (на английском): wboptimizer

Читать дальше

Все комментарии (habrahabr.ru)