Опубликован: 16.06.2010 | Уровень: специалист | Доступ: платный
Лекция 9:

Практическое приложение

< Лекция 8 || Лекция 9: 12345678

8.5. Разгоняем Joostina

Материал для данного раздела и консультирование по вопросам производительности Joostina предоставил Николай Кирш — веб-разработчик, основатель и технический лидер проекта Joostina CMS (http://www.joostina.ru/). Профессиональные приоритеты: качественный код, оптимизация под нагрузки, клиентская оптимизация.

Joostina родилась и развивается с изначальной целью: быть максимально быстрой и эффективно использовать ресурсы сервера, не уменьшая при этом удобств как для пользователя, так и для администратора сайта. В основе системы лежит CMS Joomla! 1.0.x, считающаяся уже классикой. За время развития проекта было учтено максимум пожеланий пользователей по насыщению системы необходимым функционалом, изначально отсутствующим в Joomla!. Но кроме новых возможностей также добавились новые настройки, позволяющие оптимизировать сайт под более конкретные задачи и типовые Интернет-решения.

Оптимизацию CMS Joostina можно разделить на 3 ступени:

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

Все настройки указаны для Joostina версии 1.3.0.

8.5.1. Оптимизация через базовые настройки системы

Самый быстрый и безопасный способ настроить свой сайт на более высокую скорость и выжать из него максимум возможностей — основательно ознакомиться с настройками, располагающимися в "Глобальной конфигурации". Для доступа к настройкам необходимо авторизоваться с правами Супер-администратора в административной части, называемой так же панелью управления: http://www.exampLe.ru/administrator. Далее надо выбрать пункт меню "Сайт — Глобальная конфигурация", или прямо на главной страницы панели управления, через кнопку быстрого доступа "Глобальная конфигурация".

Отключить генерацию RSS (syndicate)

Joostina, как и большинство современных CMS, умеет формировать RSS-ленты из материалов, размещенных на сайте. Чтобы браузеры при отображении страниц сайта автоматически подхватывали RSS-ленты, ссылки на них прописываются в HTML-код страниц через теги примерно такого содержания:

<link rel="alternate" type="application/rss+xml" title="Joostina v 1.3.0 b"
href="http://www.example.ru/index2.php?option=com_rss&feed=0&amp;no_html=1" />

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

Использовать шаблон

Для каждого пункта меню в панели управления можно выбрать уникальное отображение и состав модулей. Но также для каждого из пунктов меню можно назначить уникальный шаблон. Если такая возможность на сайте не используется, то ее следует отключить. Для этого и создана данная настройка. Параметр позволяет выбрать единый шаблон для всего сайта, что исключит один запрос и его обработку для выбора конкретного шаблона. Аналогичная настройка существует для панели управления.

Отключить мамботы группы system

Мамботы — это чаще всего небольшие PHP-сценарии, срабатываю щие на определенном этапе работы системы. Мамботы группы system сра- батывают в момент инициализации системы. Обычно в группу входят расширенные обработчики SEF и библиотеки подключения Javascript. Все мамботы этой группы можно посмотреть в панели управления "Меню - Мамботы -Мамботы сайта". Если справа в списке выбора типа нет группы system, то настройку рекомендуется отключить, это сделает ненужным один запрос в базу и инициализацию механизма.

Отключить мамботы группы content,

Отключить мамботы группы mainbody

Действие данного пункта аналогично группе system, но поступать тут надо внимательнее. Группа content — основная, за счет нее выводятся изображения, вставленные в текст через тег {mosimage}, разбивка на страницы внутри текста и т. д. Безопаснее всего поочередно снимать мамботы с публикации и смотреть, что изменилось на сайте. Если все мамботы не опубликованы, а сайт отображается верно, — можно отключить всю группу.

Использовать неопубликованные мамботы

Мамботы группы content часто работают, заменяя определенные те- ги в тексте, например, {mosimage}. Но если мамбот не опубликован, то система его все равно использует — чтобы убрать из текста этот самый тег {mosimage}. Если на сайте такие мамботы не используются, то лучше активировать данную настройку, исключив неиспользуемые обращения к базе данных и подключение лишних файлов.

Авторизация на сайте

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

Время существования сессии на фронте

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

Отключить сессии на фронте

При посещении сайта авторизованным пользователем или даже гостем для него запускается механизм инициализации сессий, что влечет за собой запись данных в базу, создание cookie у пользователя и постоянную проверку авторизации. Если авторизация на сайте не важна, то параметр рекомендуется отключить. Но учтите, что модуль отображающих посетителей будет выдавать не точную информацию, так как он основывается на данных записанных в таблице сессий. Параметр рекомендуется использовать совместно с пунктом "Авторизация на сайте".

Отключить контроль доступа к содержимому

Хотя в Joostina имеется не очень много возможностей для полноценного создания и управления правами пользователей, доступ к содержимому всегда ведется с учетом прав текущего пользователя. Это добавляет в SQL-запрос дополнительное условие. На сайтах, где доступ не разграничен на зарегистрированных и гостей, параметр лучше активировать.

Считать число прочтений содержимого

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

Отключить проверки публикации по датам

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

GZIP-сжатие страниц

Позволяет передавать пользователю более компактные страницы. Содержимое пакуется через gzip-алгоритм на сервере, а распаковывается автоматически в браузере пользователя. Получается экономия на трафике, но немного больший расход ресурсов сервера; более подробно расчет оптимальности применения gzip приведен во второй главе книги "Разгони свой сайт".

Блокировка компонентов

Позволяет отключить прямой доступ к компонентам, набрав специальный адрес в браузере. Если на сайте имеется компонент, но он не используется, то настройку лучше активировать.

Рейтинг/Голосование

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

Ежедневная оптимизация таблиц базы данных

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

Сжатие CSS- и JS-файлов

Позволяет выдавать вместо обычных JS- и CSS-файлов их упакованные аналоги. Экономит трафик и позволяет указать более длительное время кэширования. Работает только для встроенных файлов.

Значение тега revisit:

Позволяет указать параметр тега:

<meta name="revisit" content="10 days" />

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

8.5.2. Встроенное кэширование

Включить кэширование

В Joostina встроен механизм, позволяющий кэшировать результаты выполнения ресурсоемких функций или инициализаций объектов. Использование кэширования позволяет уменьшить число запросов в базу, уменьшить число подключаемых файлов и увеличить общую скорость работы системы. Кэширование лучше активировать после полного построения и отладки сайта.

Тип кэширующей системы

Кэшировать можно как в файлы, так и в специальные акселераторы кэширования. Joostina поддерживает работу кэширования с использованием apc, eacceLerator, xcache и memcache. Первые 3 — это не только кэш-акселераторы, но и общие оптимизаторы работы php. Наличие любого из них — очень большой плюс в работе сайта.

Оптимизация кэширования

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

Автоматическая очистка каталога кэша

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

Кэширование меню панели управления

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

Каталог кэша (/dev/shm)

По умолчанию файлы кэша складываются в каталог /cache в корне сайта. В зависимости от настроек сервера можно попытаться перенести этот каталог в более быстрое место, например, на диск с другой файловой системой или /dev/shm. Не забудьте убедиться, что PHP-интерпретатор имеет полный доступ к указанному каталогу

Время жизни кэша

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

8.5.3. Отключение встроенной статистики

Включить сбор статистики

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

Вести статистику просмотра содержимого по дате

Аналогично предыдущему параметру — лучше отключить и вести все учеты на серверах специальных сервисов.

Статистика поисковых запросов

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

8.5.4. Отключение неиспользуемых расширений

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

  • компоненты,
  • модули,
  • мамботы.

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

Отключить неиспользуемые компоненты можно в панели управления на странице управления компонентами: "Меню - Компоненты - Управление компонентами". Для работы данного механизма необходимо, чтобы в глобальной конфигурации была активирована настройка "Блокировка компонентов".

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

Заходим в меню управления модулями: "Меню - Модули - Модули сайта".

Выбираем все модули и нажимаем кнопку "Скрыть", находящуюся в верхней части страницы — на тулбаре.

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

Отключение мамботов позволяет существенно сократить непосредственное время генерации страницы. Мамботы разделены на группы, про это уже сообщалось ранее, и каждая группа отвечает за отдельные участки. Наиболее часто используемые — мамботы группы content, они позволяют обрабатывать содержимое, выдаваемое компонентом. Чаще всего такие мам-боты отвечают за замену в тексте специально оформленных тегов на необходимый функционал или оформление. Например, мамбот bot_mosimage отвечает за замену тега {mosimage} на необходимую картинку. Но для такой работы производится обработка текста регулярными выражениями, что не очень хорошо сказывается на производительности. Отключить неиспользуемые мамботы можно по той же схеме, что и модули, только на другой странице панели управления: Меню — Мамботы — Мамботы сайта.

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

< Лекция 8 || Лекция 9: 12345678
Ольга Артёмова
Ольга Артёмова

Доброго времени суток!

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

Сертификация: оптимизация и продвижение web-сайтов.

Ярославй Грива
Ярославй Грива
Россия, г. Санкт-Петербург
Ёдгор Латипов
Ёдгор Латипов
Таджикистан, Кургантепа