Сибирь. Сабынич. Айти

о природе, личной жизни и информационных технологиях

Итак, вы хотите ускорить Joomla?

        До тех пор, пока Joomla будет являться одной из гибчайших и мощных систем управления содержимым (Content Management Systems, CMS), она будет страдать в области производительности. Наилучшей производительности можно добиться использованием Lighttpd (НАМНОГО быстрее, чем Apache) на выделенном сервере с локальным сервером MySQL, включая уровни оптимизации, предоставляемые едва ли ни в каждом хостинг-центре. Для многих администраторов переход на выделенный сервер не является повседневной практикой…

Оптимизация шаблона
Начнем, пожалуй, с одной из самой распространенной (и наиболее губительной) проблемы, которую я встретил на Joomla (да и любом другом движке). Существует, буквально, тысячи шаблонов, созданных специально для Joomla и большинство их них выглядят довольно таки прилично, но и влияют на производительность сервера они так же прилично. Проблема в том, что шаблоны нередко содержат более 70 различных изображений на одной странице. Каждое  изображение генерирует новый запрос (в зависимости от задержек в сети это занимает от 0,1  секунды до 1 секунды) и скачивается. С увеличением размера изображения проблема так же увеличивается и оптимизации не поддается. Существует ОТЛИЧНЫЙ сайт, который поможет вам определить проблемную область в вашем шаблоне. Проверяйте ваш сайт даже после незначительных изменений (The Website Analyzer).

Gzip
Использование Gzip-сжатия для ваших страниц — 90% решения. Если процессор вашего сервера быстрее, чем интернет-канал (и снова, 90%), тогда включите Gzip-сжатие и это реально увеличит скорость работы вашего сайта. Я говорю это потому, что сжатие страниц довольно ощутимо нагружает CPU. Попробуйте включить Gzip и посмотреть на сколько увеличилось быстродействие. Если ни на сколько, или вы получаете предупреждения от процессора вашего сервера, отключите Gzip. Ибо это может принести некоторые проблемы,  но в большинстве случаев поможет. Единственный вариант узнать это наверняка — попробовать.

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

Статистика выглядит превосходно, но…
Она использует тонну SQL-запросов для получения данных. Это непозволительная роскошь! Если вам нужна прекрасная статистика, используйте Google Analytics и держитесь подальше от сторонних компонентов! Да, они генерируют превосходную статистику, но это пенальти в ворота производительности. Остается только статистика по поисковым запросам (из конфигурации Joomla). Если у вас есть доступ к веб-серверу, то вы можете отключить журналирование статистики с сервера (эта процедура довольно эффективная и принесет реальную помощь если ваш сервер сильно нагружен).

Мамботы — великолепные… тормоза
Посмотрите на активные мамботы. Если вы не используете какие-нибудь из них, то избавьтесь от них (не отключайте, а именно удалите их). Каждый раз, когда вы загружаете страницу, мамботы вызываются 20-30 раз. Если код не на 100% нужен и эффективен, он просто расходует ресурсы. Но это не значит, что если вы используете этот мамбот, то вам следует его оставить. Существует множество мамботов, которые замедляют работу сайта. Один из таких это AllVideos Plugin.  Великолепное решение, но использует ОЧЕНЬ большое количество запросов.

ЧеловекоПриятныеУрлы неприятны серверу
Одно из самых лучших вещей, которые вы можете сделать с сайтом – сделать адреса ссылок более понятные. На уровне ядре Joomla сделать этого не может, но есть различные сторонние компоненты, которые делают ссылки довольно милыми. Основная проблема всех этих компонентов в  том, что они влияют на производительность в худшую сторону (используют массу запросов). Я предпочитаю использовать OpenSEF (к сожалению, разработчики не проявляют никакой активности с 2007 года) как совокупность гибкости, мощности и производительности. Запомните, что использование ЧПУ это в первую очередь поиск компромисса. ЧПУ приятны как для поисковой оптимизации, так и для конечного пользователя, но отражаются на времени загрузки. Подумайте, прежде чем начать использовать ЧПУ. И если все таки решились включить, то не забывайте периодически оптимизировать базу данных для удаления неиспользуемых и неверных ссылок из базы данных OpenSEF (параметр в разделе администрирования данного компонента).

Включайте кэширование везде, где только возможно
Если у вас есть возможность, то активируйте функцию кэширования материалов на уровне ядра Joomla. Это увеличит скорость показа содержимого и модулей (мамботам не требуется обрабатываться при каждой загрузке страницы). Если вы хотите увеличить скорость для незарегистрированных пользователей, то приглашаю вас на страницу своего компоненты Page Caching, который кэширует страницы. Это, возможно, наилучший вариант, который вы можете найти для своих незарегистрированных пользователь (а это 95% всех посетителей). Но это не значит, что вам следует забыть про остальную оптимизацию, ибо зарегистрированные пользователи будут видеть некэшированный сайт.

Ищем плохие запросы
В настройках Joomla включаем отладочную информацию. Теперь вы видите свой сайт и все запросы к базе данных. Надо, чтобы их число было как можно меньше (предпочтительно, чтобы было до 30, но терпимо до 50 запросов). Начните с поиска повторяющихся запросов (те, которые запускаются снова и снова). Вы ДОЛЖНЫ с уверенностью сказать какое расширение создает запрос и к какой таблице (к примеру, “Select * from jos_opensef_config” в OpenSEF). Существует несколько вариантов уменьшения запросов. Это отключить расширение или обратиться к разработчику и попытаться оптимизировать (либо к разработчику расширения, либо к любому другому фрилансеру, типа меня).

Держитесь подальше от мостов
Популярный метод добавление функциональности к Joomla – использование мостов. Они предполагают модифицирование как ядра Joomla, так и другой программы (к примеру SMF или Gallery) для совместного функционирования. Поверхностно это все выглядит здорово, потому что другая программа предлагает более привлекательный функционал, нежели “истинные” расширения Joomla, но при более глубоком рассмотрении совсем другая история. Проблема существует в обоих системах независимо, каждая их которых пытается подгрузить свое “ядро” (включая фреймворк, систему управления пользователями и тому подобное). Это ОЧЕНЬ большой урон производительности, грубо говоря мы загружаем две страницы на каждую. При переходе, к примеру с SMF на что-нибудь типа Fireboard вы немного теряете в функционале, но приобретаете в производительности.

Оптимизация базы данных
Единственный камень преткновения большинства инсталляций Joomla это сервер баз данных. Существует два пути оптимизации базы данных. Оптимизируйте таблицы и оптимизируйте структуру. Отличие между ними в том, что в таблицах хранятся данные, а в структуре – информация о том, как хранятся эти данные. Оптимизация структуры потребуется лишь однажды, когда как оптимизацию таблиц следует проводить регулярно (т.к. данные постоянно добавляются, редактируются и удаляются). Для оптимизации структуры обратитесь к статье “Улучшение запросов в Joomla”. Для оптимизации таблиц перейдите в phpMyAdmin, выберите все таблицы и нажмите “оптимизировать”. Для получения более подробной информации об оптимизации таблиц баз данных прочитайте этот раздел из документации по MySQL.

И, наконец, резервное копирование и наблюдение за сервером
Вы ДОЛЖНЫ регулярно сохранять резервные копии и переносить их с рабочего сервера. Вы можете подумать: “Как это относится к производительности?” это ВСЕ относится к ней самой.  Без текущих резервных копий как вы сможете восстановить сайт до известной конфигурации, если инсталляция, обновление или настройка прошла плохо? Внезапное ухудшение работы сайты может быть вызвано попыткой злоумышленников внести вредоносный код в ядро сайта (к сожалению, это вполне возможно). Что случится, если ваш сайт “склеит ласты”? Наилучший способ резервного копирования это создание резервных копий автоматически с помощью скрипта (для того, чтобы вы не забыли ненароком). Существует единственный такой скрипт на всем интернете (и, возможно, один уже установленный в панели управления) просто погуглите. Запомните, перед тем, как что-либо делать на сайте, СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ!

 

  • Источник: http://www.joomlaperformance.com/articles/performance/so_you_want_to_speed_up_joomla_3_14.html
Итак, вы хотите ускорить Joomla?

5 комментариев для “Итак, вы хотите ускорить Joomla?

  1. Добрый день. Вот тут в тексте встретил “установите мой компонент кеширования страницы”. А где этот компонент скачать можно? Спасибо

    1. Это переводная статья с сайта joomlaperformance.com и бОльшая часть описанного актуально для джумлы версий 1.0/1.5
      Сейчас Joomla (да и с 1.5 уже версии) хорошо поддерживает все современные системы кеширования apc, xcache, memcached, opcache с возможностью установки времени хранения кеша. Поэтому особого смысла устанавливать какие-либо кеширующие компоненты дополнительно я не вижу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх
Exit mobile version