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

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

Решаем проблемы с установкой Web Optimizer

После многочисленных установок приложения для автоматического ускорения сайтов — Web Optimizer на Joomla! (как версии 1.0, так и 1.5) было решено собрать воедино полезное знание о возникающих проблемах (связанных, в основном, с текущим некорректным серверным окружением), чтобы позволить их самостоятельно решить большому числу пользователей.

Итак, давайте разбираться по порядку, что нам делать в следующих случаях.

Загрузить Web Optimizer: code.google.com/p/web-optimizator/downloads/list

Функционирование Web Optimizer

Довольно часто приходится разобраться с тем, работает ли Web Optimizer на сайте, или его установка каким-то образом не подключилась к обработке HTML-документа. Начиная с версии 0.5.2 это можно установить, найдя строку <title lang="wo"> в коде страницы (если метка там отсутствует, значит Web Optimizer не отрабатывает).

Для более ранних версий это решение можно принять на основе отсутствия в коде HTML-документа отступов в начале строки, двойных переводов строк или наличия характерных закэшированных имен файлов в head-секции (cache/1234a6789b.css или cache/1234c6789d.js, здесь 1234c6789d — произвольная строка в шестнадцатеричной записи).

Если обнаружить следы работы Web Optimizer не удалось, то необходимо перепроверить корректность вызовов Web Optimizer в файлах системы управления сайтом и, возможно, провести установку приложения еще раз — таким образом Web Optimizer сможет самостоятельно произвести все необходимые изменения.

Если нужно получить информацию о необходимых изменениях исходных файлов CMS, то следует в ходе установки отключить автоматическое изменение /index.php:

Изменение /index.php -> Включить авто-запись -> Нет

и на последнем шаге зайти на вкладку «Необходимые изменения».

«Кракозяблы» вместо сайта

Обычно это связано с двойным сжатием HTML-документа. Одно из сжатий может быть наложено самим Web Optimizer, а второе — как используемой системой управления сайтом, так и сервером.

Чтобы снять одно из накладываемых сжатий, можно отключить его либо в CMS, либо в конфигурации сервера, либо в самом Web Optimizer:

Настройки архивирования -> Применить gzip для HTML -> Нет

Белый экран вместо сайта

Основная проблема возникновения белого экрана (превышение лимита памяти при создании CSS Sprites) уже устранена в версии 0.5+, поэтому если у вас более старая версия, то стоит просто ее обновить.

Также стоит заглянуть в логи ошибок вашего сервера, чтобы узнать, что привело к такому состоянию. Обычно это помогает решить проблему.

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

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

Некорректный внешний вид

Это может быть причиной различных проблем, но для начала можно попробовать отключить CSS Sprites:

CSS Sprites -> Применить CSS Sprites -> Нет

затем, если это не помогло ситуации, можно отключить data:URI:

Data:URI -> Применить data:URI -> Нет

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

Если и после этого внешний вид сайта «разъехался», то стоит отключить объединение стилей внутри head

Включить внешние файлы -> Включить объединение внешних CSS-файлов -> Нет

или вообще минимизацию для CSS-файлов

Настройки сжатия -> Минимизировать и объединить CSS-файлы -> Нет

Если есть желание разобраться в возникшей проблеме более детально, то можно при отключенном объединении стилей внутри head попробовать исключить один за другим при помощи следующей настройки:

Включить внешние файлы -> Исключить из объединения файлы -> Список файлов через пробел

Найти тот файлы (или те файлы), которые обрабатываются некорректно, привести их к стандартному состоянию при помощи валидатора jigsaw.w3.org/css-validator/ и попробовать объединить снова.

Пропавшие или неправильные фоновые изображения

В некоторых случаях проблемы после установки Web Optimizer сводятся к тому, что некоторые фоновые изображения пропадают или «портятся». Для решения этого набор проблем необходимо установить, с какими первоначальными фоновыми изображениями возникают трудности (используя любые средства для отладки верстки) и исключить эти изображения из процесса создания CSS Sprites:

CSS Sprites -> Исключить из CSS Sprites файлы -> Список файлов через пробел

Если данная мера не приносит результата, то CSS Sprites можно вообще выключить:

CSS Sprites -> Применить CSS Sprites -> Нет

Некорректное поведение сайта

Обычно это сводится к тому, что часть клиентской логики перестает отрабатывать. Нужно хорошо понимать, что если, например, форма для ввода комментариев у вас на сайте выводится при помощи JavaScript, и после Web Optimizer она перестала выводиться, то это проблемы не внешнего вида, а клиентской логики.

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

Настройки сжатия -> Минимизировать и объединить JavaScript-файлы -> Нет

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

Включить внешние файлы -> Исключить из объединения файлы -> Список файлов через пробел

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

Недоступность файлов для пользователей

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

Использование .htaccess -> Защитить установку Веб Оптимизатора с помощью htpasswd -> Да

В этом случае директории кэширования нужно вынести из папки самого Web Optimizer (например, в корневую директорию cache, доступную на запись для веб-сервера) либо отключить защиту приложения:

Использование .htaccess -> Защитить установку Веб Оптимизатора с помощью htpasswd -> Нет

Отсутствие поддержки множественных хостов

Если требуется включить несколько параллельных хостов для ускорения загрузки статических ресурсов, то стоит проверить следующие моменты:

  1. Наличие поддержки этих хостов в DNS. Для этого нужно сделать соответствующие этим хостам записи в вашей DNS-зоне, указывающие на требуемый IP-адрес (обычно тот же, что и у текущего сайта).
  2. Включить поддержку этих хостов на уровне самого сервера. Для Apache это делается директивой ServerAlias, например:
    ServerAlias i1.site.ru
    ServerAlias i2.site.ru
  3. Проверить, что эти хосты зеркалируют основной сайт. Для этого нужно взять адрес любого статического объекта на сайте (например, site.ru/images/my.png) и попробовать его открыть через все дополнительные хосты (i1.site.ru/images/my.png). При наличии каких-либо проблем необходимо повторить предыдущие шаги.
  4. Добавить указанные хосты в конфигурацию Web Optimizer
    Множественные хосты -> Доступные хосты -> Название хостов через пробел
    и включить поддержку множественных хостов
    Множественные хосты -> Включить параллельные хосты, например, i1 i2 -> Да
    Web Optimizer автоматически проверяет несколько наиболее распространенных хостов и последняя настройка может и не потребоваться.

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

Замеченные ошибки и документации

Документация и описание приложения будет шириться и расти. на данный момент уже опубликованы статья с описанием настроек и статья с пошаговым руководством по установке.

Часть документации (в основном, касательно принципов работы) выложена на английском здесь: code.google.com/p/web-optimizator/w/list

Некоторые известные проблемы и методы их решения уже описаны в предыдущей статье. Если вы обнаружили некорректное поведение Web Optimizer для вашего сайта, вы можете опубликовать описание ошибки (требуется Google-аккаунт) или посмотреть все известные (или решенные) вопросы. На данный момент среднее время решения проблемы составляет около суток (обычно несколько часов).

Также можно попробовать решить проблему в интерактивном режиме, используя указанные контакты.

Эффективность

Несколько результатов использования Web Optimizer (для "чистой" установки системы, без каких-либо предварительных оптимизаций) приведено здесь. Оценка YSlow поднимается до 89-97, скорость клиентской загрузки в 2-3 (реже 3-5) раз. Сам Web Optimizer после создания кэшированных файлов тратит всего 3-10мс на проверку и обновление выходного HTML-документа (при настройках по умолчанию, корректное сжатие HTML в одну строку — достаточно ресурсоемкая операция и может занимать еще 50-100мс).

Загрузить Web Optimizer: code.google.com/p/web-optimizator/downloads/list

Поддержать проект материально: http://sprites.in/donate/

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

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