Статьи Доклады с конференций

Автор: Николай Мациевский aka sunnybear
Презентация в .ppt

Разгоняем CMS: дешево и сердито

Данный обзор делался исключительно для презентации на конференции iCamp'2008. Я проанализировал несколько наиболее распространенных в Рунете CMS и привел все информацию по ускорению их загрузки, которую удалось обнаружить.

S.Builder

Демо-версия, практически, никакой информации не дала, поэтому далее информация (цитаты) лично от директора.

  1. Gzip для HTML

    В версии 4.0 этой функцией можно управлять из настроек системы. Просто поставить галочку в поле «Использовать GZip-сжатие страниц» и если браузер человека поддерживает такую функцию, то и CMS и страницы сайта будут использовать GZip. Если на одной CMS собрано несколько сайтов, настройка отдельна для каждого сайта.

  2. CSS/JS сжатие/минимизация

    Не применяется. Только руками верстальщика.

    В нашей CMS человек сам вставляет HTML, CSS и JS в том виде, в котором они были сверстаны.

  3. Кеширование

    Насколько удалось установить, наиболее корректно отдается Last-Modified для HTML. Все остальное покрыто мраком.

  4. CSS Sprites / параллельные хосты

    Нет и не планируется.

UMI.CMS

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

  1. Включаем кеширование

    Оно включается в настройках Модули -> Конфигурация -> Глобальные -> Разрешить браузерам кешировать страницы. В серверные заголовки при этом добавляется Last-Modified. Цитата из документации:

    Если эта опция включена, то браузер пользователя будет вначале проверять, изменилась ли страница, и если страница не менялась, то загрузит ее из локального кэша. При этом браузеру будет посылаться HTTP-заголовок Last-Modified, который содержит дату последнего изменения страницы. Эта опция поможет значительно снизить нагрузку на трафик и позволит быстрее открывать страницы.

  2. Подключаем зеркала для ускорения выдачи статики

    Модули -> Конфигурация -> Домены, выбираем наш домен и жмем Зеркала. На открывшейся странице можно добавить еще несколько (2–4) хоста для выдачи статики. Например, у нас был домен

    endocardial.demo-pro.umi-cms.ru

    мы добавляем еще 4 хоста

    i1.endocardial.demo-pro.umi-cms.ru
    ...
    i4.endocardial.demo-pro.umi-cms.ru

    и теперь все картинки можно отдавать еще и таким образом

    http://i1.endocardial.demo-pro.umi-cms.ru/images/cms/thumbs/picture2_50_50.jpg

    Выяснить через техническую поддержку, можно ли это как-то автоматически прикрутить к существующим модулям, не удалось. Наверное, никак.

  3. Сжатие и минимизация CSS/JS

    Цитирую службу поддержки:

    Возможно реализовать, но это будут уже custom-ные решения для UMI.CMS. Вы можете сделать их самостоятельно или с помощью сторонних разработчиков.

Drupal

Для тестирования бралась демо-версия с demo.bloggyland.com. Очень много советов по оптимизации приведено на странице wimleers.com/article/improving-drupals-page-loading-performance, где автор разбирает все правила из YSlow применительно к Drupal. Я лишь попытаюсь дополнить своими собственными.

  1. Склейка CSS-файлов

    Еще во время своего первого знакомства с Drupal порадовался наличию возможности объединять десятки CSS-файлов для различных модулей (и затем кешировать результат). Включается это через Administer -> Site Configuration -> Performance. Эта настройка также автоматически минимизирует файл (регулярными выражениями).

  2. Склейка JS-файлов

    Не Доступна в базовой поставке (Drupal 6, спасибо за комментарий  adek), и нам поможет модуль Javascript Aggregator. Делает, в принципе, то же самое, что и предыдущий вариант, но уже для JavaScript-файлов. К тому же есть настройка для минимизации их размера (на основе обычных регулярных выражений, это дает от 80% возможного прироста производительности).

  3. Gzip

    Включается автоматически (не нашел, где включается в настройках, но все Drupal-сайты уже отдавали HTML в сжатом виде). Для CSS/JS-файлов добавляется (по всей видимости) двумя вышеупомянутыми решениями. Навскидку никаких проблем замечено не было.

  4. Кеширование

    Для статики и HTML-файлов настраивается в Administer -> Settings -> Cache Settings.

  5. CSS Sprites, CDN, etc

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

Joomla

Некогда весьма популярная CMS сейчас как-то меньше мелькает в обзорах. Однако, сайтов на ней порядочно, и сообщество просто громадно. Настройки проверялись на имеющихся сайтах.

  1. Gzip

    Для HTML-файлов добавляется в Общие настройки -> Сервер -> GZIP-сжатие страниц. Gzip для CSS/JS не предусмотрен.

  2. Склейка, минимизация и кеширование CSS/JS-файлов

    В базовой конфигурации нет. Удалось найти следующее расширение (Cache accelerate component), которое дополнительно позволяет дополнительно кешировать (и архивировать) CSS/JS-файлы. Однако, не все ладно с серверными заголовками. Использовать стоит с осторожностью: возможны проблемы с совместимостью.

    Также попутно был обнаружен PHP Speedy plugin для Joomla, который позволяет делать то же самое, но с серверными заголовками у него все в порядке. В общем, рекомендуется к использованию.

  3. Etc.

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

В качестве заключения

Абсолютно все CMS показали небогатый набор инструментов для клиентской оптимизации. Лучше всего с этим дело обстоит у открытых CMS, которые во многом развиваются за счет комьюнити.

Спасибо за внимание. Буду рад ответить на ваши вопросы.

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