4000 грн на місяць

Оптимизируем и ускоряем Joomla, делимся своим опытом

Статус: Офлайн
Реєстрація: 27.12.2011
Повідом.: 196
Оптимизируем и ускоряем Joomla, делимся своим опытом

Кто знает про методы оптимизации запросов и ускорения загрузки страниц Joomla пишем сюда.

В качестве старта предлагаю метод оптимизации запросов с помощью легкого сервера Nginx. Метод успешно тестируется для Joomla+Property с трафиком 10-15К просмот/сутки на виртуальном сервере VPS ram-256 мб провайдера украина.

В стандартной конфигурации Аpache принимает все запросы на себя и вместе с MуSQL вешает сервер через 3 минуты после запуска :диявол:.
Суть метода в том чтобы поставить Nginx в качестве прокси для апача. Его задача в фильтрации запросов и разделении запросов к статическому и динамическому контенту: динамику направляет на апач (бекэнд) через локахост, а статику отдает напрямую с корня :клас:.

Привожу рабочие исходники конфигов для сервера находящегося у провайдера на котором установлен дистрибутив Fedora12+Apache (Red Hat Enterprise Linux 4 / CentOS 4, Red Hat Enterprise Linux 5 / CentOS 5,ASPLinux Server 5). В других продуктах линукса разница только в необходимости установки репозитариев.

Устанавливаем Nginx:
Код:
yum install nginx

Исправляем конфиг Nginx /etc/nginx/nginx.conf
Код:
user  nginx;
    
	## указываем число процессов по числу ядер 
	worker_processes  1;
    
	error_log  /var/log/nginx/error.log debug;
        pid        /var/run/nginx.pid;
    
	    
    events {
        ## кол-во одновременныех подключений 
  	worker_connections  1024;
    
	}

http   {
    
	## подключаем обработчики мим-типов
	include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

        access_log  /var/log/nginx/access.log;

        ## экономит память, разгружает процессор 
 	sendfile        on;
    
	## пакетирует данные, сбрасывает разорванный пакет  
	tcp_nopush     on;
    
	## устанавливает время ожидания ответа apache
        keepalive_timeout  15;
    
	## сбрасывает неполные пакеты данных, работает с keep_alive, считается взаимоискл с tcp_nopush но у меня работает лучше с двумя.
	tcp_nodelay        on;
    
	## включаем сжатие файлов, указываем типы
        gzip  on;
        gzip_comp_level 3;
        gzip_proxied any;
        gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
        #
	
	## подключаем конфиги обработчиков 
        include /etc/nginx/conf.d/*.conf;
    
	## указываем локальный адрес для бекэнда
	upstream backend {
        server 127.0.0.1:8080;
    }
        #

server {
        ## подключаемся к внешнему порту
	listen 80;
	
	## указываем имя сервера
	server_name  mysite.com www.mysite.com;
	
	## подключаем бекэнд, присваиваем заголовкам переменные 
	location / {
	proxy_pass https://backend;
	proxy_redirect off;
	proxy_set_header Host $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Real-IP $remote_addr;
    }
	#
	
	## забираем у апача статику и отдаем напрямую
	location ~* ^.+\\.(jpg|jpeg|png|css|js|tft|sys|ini|bmp|ico|rar)$ {
	root /var/www/user/data/www/mysite.com;
	
	# пишем логи
	access_log /var/www/httpd-logs/mysite.com.access.log ;
	error_log /var/www/httpd-logs/mysite.error.log ;
	}
    #

}
}

Для связки Nginx с Apache необходим модуль mod_rpaf , устанавливаем:
Код:
cd /usr/local/src
wget https://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c # если апач1 то в начале asxp

Далее необходимо изменить конфиг Apache etc/httpd/conf/httpd.conf
Добавляем в файл:

Код:
## меняем порт 80 на 8080
Listen 8080

## раскоментим и впишем свой сайт
ServerName mysite.com     

## подключаем модуль mod_rpaf  дописав в список модулей
LoadModule rpaf_module modules/mod_rpaf-2.0.so
 
## Указываем внутренный порт и меняем пути на свои
NameVirtualHost *:8080
<VirtualHost *:8080 >
	ServerName mysite.com
	CustomLog /var/www/httpd-logs/mysite.access.log combined
	DocumentRoot /var/www/user/data/www/mysite.com
	ErrorLog /var/www/httpd-logs/mysite.com.error.log
	ServerAdmin i@mysite.com
	ServerAlias www.mysite.com
	SuexecUserGroup user user
	AddHandler php-cgi .php .php3 .php4 .php5 .phtml
	ScriptAlias /php-bin/ /var/www/user/data/php-bin/
	ScriptAlias /cgi-bin/ /var/www/user/data/www/mysite.com/cgi-bin/
</VirtualHost>

## Включили модуль, имя сервера, указали мостик локалхост и сервер, обозначили тип заголовков
<IfModule mod_rpaf.c>
        RPAFenable On
        RPAFsethostname On
        RPAFproxy_ips 127.0.0.1 хх.хх.хх.хх    ## xx.xx.xx.xx - IP сервера
        RPAFheader X-Real-IP
</IfModule>

Теперь рестартуем Apache и Nginx
Код:
service httpd restart
service nginx restart

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

Вкладення

  • joomla_speed.webp
    joomla_speed.webp
    57.7 КБ · Перегляди: 166
Останнє редагування:
Оптимизировать жумлу можно только путем полного ее удаления с сервера.
 
Зачем apache? nginx + php5-fpm прекрасно справляется с задачей
В дистрибутивах предлагаемых на выбор для установки на ВПС Apache установлен по умолчанию. Если делать nginx основным обработчиком: apache достаточно заглушить в конфиге или сносить его?
 
В дистрибутивах предлагаемых на выбор для установки на ВПС Apache установлен по умолчанию. Если делать nginx основным обработчиком: apache достаточно заглушить в конфиге или сносить его?
хочешь сноси, хочешь просто останови, nginx-у будет похуй если конечно не занят 80й порт
 
хочешь сноси, хочешь просто останови, nginx-у будет похуй если конечно не занят 80й порт
Я понял, спасибо! А кто пользовался webo-site-speed , какие впечатления от компонента? Лично я как не настраивал - скорость загрузки больше 78 не дает, если объединять css и скрипты расположенных в body - разваливает страницы. Реально его настроить на максимальную скорость загрузки в бесплатной версии?
 
хочу помочь форумчанам с оптимизацией сайта на Joomla. нашла пару статеек по этому поводу. там говорится о том, как сделать сайт статическим + несколько советов по созданию отдельного дизайна для каждой страницы на Joomla.
кому интересно, пользуйтесь! :)
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
Останнє редагування:
хочу помочь форумчанам с оптимизацией сайта на Joomla. нашла пару статеек по этому поводу. там говорится о том, как сделать сайт статическим + несколько советов по созданию отдельного дизайна для каждой страницы на Joomla.
кому интересно, пользуйтесь! :)
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Полезные статьи, спасибо!
 
есть такой уже оптимизированный джумлоподобный cms joostina. Но похоже что автора на него забили :(
 
есть такой уже оптимизированный джумлоподобный cmsjoostina. Но похоже что автора на него забили :(
Это вариации 1.0, я начал с 1.5, поэтому у меня за нее сказать не чего.

Меня порадовал последний релиз полуторки 1.5.26, пообновлял сайты - стали шустрее, исчезли некоторые баги возникшие в процессе эксплуатации.

В большинстве случаев скорость работы Joomla зависит от шаблона. Если стоит задача установить высокофункциональный шаблон, то желательно, чтобы он был с встроенным кешированием (не путать с кешированием joomla).

Недавно работал с Kinetic студии RocketTheme - мощнейший шаблон на фреймворке Gantry, но за счет встроенного кеширования работает гораздо быстрее чем тот же Cloudebase 2.0, который намного легче но без кэширования.
 
Если кому интересно - могу предложить за пиво сборочку с виртухаем. Решена проблема прописывания титлов в товарах и категориях.
 
Если кому интересно - могу предложить за пиво сборочку с виртухаем. Решена проблема прописывания титлов в товарах и категориях.

"Виртухай" это Virtuevart ? Нету там ни каких проблем с прописыванием title в товарах и категориях - тупой способ впарить свои ссылки и редиректы!
 
и в мыслях не было - свои ссылки ставить - как Вы решаете данную проблему? - просто интересно? я нанял программера - он сделал....как бы так... - вот хочу поинтересоваться какой плагин подключить, чтобы можно было прописывать вручную титлы в товарах и категориях - там на данный момент ставится по умолчанию заголовок, ну а иметь в карточке товара слова купить, продажа и пр. не красиво)))))
 
и в мыслях не было - свои ссылки ставить - как Вы решаете данную проблему? - просто интересно? я нанял программера - он сделал....как бы так... - вот хочу поинтересоваться какой плагин подключить, чтобы можно было прописывать вручную титлы в товарах и категориях - там на данный момент ставится по умолчанию заголовок, ну а иметь в карточке товара слова купить, продажа и пр. не красиво)))))

Joosef, sh404sef+расширение для VM, для оптимизации запросов и ускорения Joomla+Virtuemart можно модифицировать роутер или взять готовый для VM 1.*
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
, но это хак, который может вылести боком в плане стабильной работы магазина.
 
где же Вы раньше были?))) спасибо за информацию, буду мотать на ус!!
 
Оптимизировать жумлу можно только путем полного ее удаления с сервера.

Сравнение WordPress, Drupal и Joomla. Преимущества и недостатки

Система управления контентом (CMS) является достаточно мощным средством, используемым для организации содержания интернет ресурса, по желанию разработчика. На сегодня существует три основных ведущих систем управления контентом веб сайта:WordPress, Drupal и Joomla. Все они с открытым исходным кодом, а это означает, что можно свободно скачивать и изменять их, следуя личным потребностям.
Более того, в представленных CMS поддерживаются расширения, которые не оставят в замешательстве веб-разработчика, особенно если он новичок. Сообщества WordPress, Drupal и Joomla предоставляют всевозможные дополнения, в которых каждый сможет найти то, что его интересует, вне зависимости от типа веб-ресурса, будь то блог, портал или форум. Кроме того, всегда есть возможность обратиться к сообществу за помощью по вопросам настройки CMS.

Многие задаются вопросом – какая из систем лучше? Которая CMS WordPress, Drupal или Joomla сможет предоставить не только удобный интерфейс, но и широкие функциональные возможности? Именно этому вопросу и посвящена данная статья.

WordPress

На сегодняшний день WordPress является самой популярной платформой в блогосфере. Это система с открытым исходным кодом, распространяемая под GNU GPL. WordPress предоставляет огромное количество возможностей, позволяющих разработчику быстро и легко управлять содержимым сайта. К ним относятся: известная «5-ти минутная» установка; публикация статей с помощью сторонних программ и сервисов; поддержка Atom, RSS, pingback, trackback; возможность подключать дополнительные плагины; выбор множества отличных аудио плееров для блога;огромное количество тем на различные тематики, позволяющие быстро изменить внешний вид сайта и многие другие.
Кроме того, WordPress содержит такие функции, как комментарии, трекбэки, блоггер профилей и пингование услуг, что очень удобно использовать для анализа трафика и таким образом контролировать функционирование сайта.
С другой стороны, WordPress не относится к «developer-friendly» системам и сообщество данной CMS значительно меньше по сравнению с Drupal или Joomla. Помимо этого, определенное программное обеспечение WordPress и плагин обновления, как показали случаи, имеют больше глюков, чем исправлений и могут нарушить защиту компьютера. Поэтому необходимо проверять обновления на наличие вирусов и читать отзывы при обновлении WordPress или установки плагинов. В целом, WordPress является эффективной системой для любого новичка или опытного пользователя, что делает ее очень универсальной CMS.

Drupal

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

Joomla

Joomla – это CMS с открытым исходным кодом для веб-разработчиков и дизайнеров, с легко настраиваемым интерфейсом, которую удобно использовать в качестве основы для веб-ресурса. Для тех, кто использует эту систему, нет никаких ограничений в плане администрирования, так как она позволяет персонализировать сайт, настроить его по своему усмотрению, благодаря чему, даже начинающие разработчики смогут легко модифицировать систему без редактирования исходного кода, сохраняя ее основную функциональность. Более того, здесь имеется доступ ко многим бесплатным плагинам, что позволяет создавать веб-сайты с подключением дополнительных особенностей. Joomla является дизайнерски-ориентированной системой и это несомненно оценит любой веб-дизайнер.
Главные недостатки Joomla: кодирование не будет гибким, особенно при сохранении основного ядра системы. Разработчики, у которых нет достаточного опыта в создании веб-сайтов, могут столкнутся со сложностями в процессе интеграции программного обеспечения.
Тем не менее, если Вы настроены использовать мощную CMS и у вас есть определенный опыт в сайтостроении, то Joomla Вам обязательно пригодится.

Заключение

Итак, можно сделать вывод, что каждая CMS хороша по своему и выбирая ту или иную систему нужно, прежде всего, ориентироваться на цели создаваемого интернет ресурса. Система управления контентом сможет значительно улучшить организационную структуру сайта и позволит Вам оптимизировать его для поисковых систем. Благодаря мощному программному обеспечению таких CMS как WordPress, Drupal и Joomla, Вы можете быть уверены, что найдете подходящую основу для Вашего веб-сайта независимо от того, новичок Вы или эксперт.

Статья с
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
, но мне понравилась.

P.S. Вокруг одни девелоперы и программисты, но на практике каждый день получаю и выполняю заявки на переделывание ихних творений, хоть и не могу назвать себя программистом.
 
Не хочу разводить холивар, но объясню свою позицию.

Все CMS в 80% случаев это УГ и их использование оправдано только на сайтах-однодневках, которые поднимаются на той же джомле за 3-4 часа. Почему? Потому что говнокод, на котором написаны все вышеперечисленные cms, достаточно сложно дописывать и рефакторить. Исключение составляют только некоторые движки, которые написаны для конкретных типов сайтов (например, магазины), и то, если там не функциональный говнокод и сам движек попадает под тз процентов на 70, в остальных случаях быстрее и во всех смыслах лучше написать на фреймворке. Конкретные примеры, почему так, приводить не буду - их вайлом в нете, гугль в помощь.

По поводу темы топика мне тоже есть что рассказать, с джомлой работал достаточного много и достаточно плотно. Помимо внешней оптимизации работы сервера (аля nginx+php-fpm, eaccelerator etc), можно попробовать оптимизировать саму джомлу. Но это воистину адский труд, зная говно, которое творится внутри.

Итак, нужно перебрать каждый компонент, модуль и плагин и в каждом сделать следующее:
1. выкинуть все левые шаблонизаторы, по максимуму использовать внутреннюю систему шаблонизации джомлы (я видел умники подключали смарти к компонентам) и не говнокодить в стиле "спагетти" ;)
2. по максимуму использовать api джомлы, без всяких mysql_query(), echo, ссылки только через JRoute, переменные только через JRequest и тд
3. пересмотреть все запросы к базе, стараться выбросить лишнее, одинаковые запросы обьеденить в один результат, использовать JOIN'ы вместо нескольких запросов, и самое главное (очень часто встречающиеся явление в джомле) - запросы в циклах, за такое руки отбивать линейкой нужно. Ну и вообще весь подобный говнокод оптимизировать.
4. по максимуму использовать стандартное кеширование (
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
) и в зависимости от настроек mysql сервера, можно юзать SQL_CACHE

Ну и вообще провести хороший рефакторинг кода, особенно сторонних компонентов - обычно все говно сосредоточено в них.
 
Итак, нужно перебрать каждый компонент, модуль и плагин и в каждом сделать следующее:
1. выкинуть все левые шаблонизаторы, по максимуму использовать внутреннюю систему шаблонизации джомлы (я видел умники подключали смарти к компонентам) и не говнокодить в стиле "спагетти"
2. по максимуму использовать api джомлы, без всяких mysql_query(), echo, ссылки только через JRoute, переменные только через JRequest и тд
3. пересмотреть все запросы к базе, стараться выбросить лишнее, одинаковые запросы обьеденить в один результат, использовать JOIN'ы вместо нескольких запросов, и самое главное (очень часто встречающиеся явление в джомле) - запросы в циклах, за такое руки отбивать линейкой нужно. Ну и вообще весь подобный говнокод оптимизировать.
4. по максимуму использовать стандартное кеширование (
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
) и в зависимости от настроек mysql сервера, можно юзать SQL_CACHE
Хороший тематический пост!, но хотел бы сказать следующее:

Чем сложней и функциональней прога, тем больше в ней ошибок, но Joomla на сегодня регулярно обновляется и правильнее направлять свои наработки разработчикам, чем впаривать заказчику и не давать ему обновляться. Тем более, что при правильной установке всех компонентов, для нормальной работы сайта эти ошибки не критичны!

Что про рассказы джунов о волшебности фреймворков, так это из серии "Каждый кулик свое болото хвалит!". Я еще не встречал даже подобных Joomle по функционалу и проработке дизайна сайтов на фремворке. Да они быстрые и иногда красивые, но на ту же админку страшно смотреть не то что в ней работать. У нас такие сайты делают или одиночки или недофирмы, называющие себя студиями или даже девелоп-компаниями, клепающие херню, которую нельзя ни расширить, не обновить.

И тут дело не в квалификации наших умельцев, а в организации производства и инвестициях. При остутствии инвестиций, единственная задача разработчика - впарить свой недопродукт прямому клиенту. Отсюда и керосин в сторону бесплатных CMS, на разработку которых потрачены миллионы доларов и труд высокопрофессиональных разработчиков.
 
Останнє редагування:
Ну, раз на то пошло...
1. В джомле не ошибки, а говнокод внутри. Вы, наверное, не работали с хорошим красивым кодом и Вам сложно оценить убогость оного в джомле.
2. Функционал в фреймворке делается на столько, на сколько клиент платит, а не на сколько фреймворк может. В джомле же весь этот "функционал" и тормозит всю систему, т.к. реально используется в лучшем случае не больше 50-60% всего функционала и его никак не отключишь.
3. На счет "красивые" .. дизайн рисуется дизайнерами, но никак не фреймворками :) Админка тоже в большинстве фреймворков пишется с 0 вместе с дизайном, ее оформление полностью на плечах программеров. Очень редко оплачивается оформление админки как таковой. И, по сути, админка для управления сайтом, а не для того, что бы на нее любоваться.
4. По поводу использования cms как таковых - это показывает уровень канторы или конкретного разработчика. Если кантора не может написать сайт - она использует готовое решение. Хотя согласен, что доля инвестирования на этот фактор влияет. Но и есть канторы, которые принципиально не берутся за низкобюджетные сайты или cms, потому как знают во что это может вылиться, лично знаю такие. Я лично принципиально не разрабатываю на cms, за исключением случаев, которые я писал выше.

Да что мы спорим то :) Вы откройте исходники джомлы. Если брать стандартный набор компонентов, во фронтенд-части все еще более-менее сносно, а вот в бекэнде... Ну, к примеру, посмотрите код com_categories и com_sections, mod_submenu (версия 1.5.22-Stable). А о всеми любимом VM вообще без мата не вспомнишь :) Если Вы считаете это нормальным кодом - нам спорить не о чем.

Что про рассказы джунов
Вы имеете ввиду меня?
 
Назад
Зверху Знизу