Оптимизация ExpressionEngine

[/root.]

Он самый
Регистрация
20 Май 2006
Сообщения
370
Реакции
70
Мой вольный перевод из официальной документации + заметки. Итак, для того чтобы оптимизировать движек, вы можете сделать следующее:
Убиваем лишние запросы
* Не используйте сессии в настройках безопасности. Кукисов (cookie) должно быть достаточно практически для 99% пользователей (пока вас не взломают).
* Выключите обработку форм в защищеном режиме (настройки безопасности).
* Выключите отслеживание реферов. Счетчик от li.ru вполне заменяет данную функцию. Так-же не забудьте вообще выключить модуль реферов.
* Включите кеширование SQL запросов (настройки базы данных).
* Включите кеширование запросов в****га (не путаем с общим системным кешированием).
* Включите кеширование страниц и темплейтов. Время кеширование подбирается индивидуально. Разделяйте статичные и динамичные элементы. Время кеширование статичных элементов (стили, куски кода без php кода и прочее) соответственно больше чем у динамичных элементов. Так-же не забываем, что если сайт обновляется довольно часто (несколько раз в день), то даже динамичные элементы можно кешировать с большим интервалом. Просто не забудьте включить опцию очистки кеша при публикации новой записи.
* Старайтесь как можно меньше использовать так называемые embedded (включаемые) темплейты. Если у вас статичный контент, то используйте глобальные переменные (global variables), нежели новому шаблону статичного типа (type: static).
* Старайтесь создавать как можно меньше обращений к базе данных. Не устанавливайте лишних плагинов и модулей. Каждое кастомное решение старайтесь делать встроенными возможностями системы, даже если это будет несколько сложнее. Модуль SQL Query позволяет в разы сократить затраты на разработку и увеличить гибкость системы в целом.
* Отключите все неиспользуемые вами функции (капча, словари, фильтр плохих слов). Это существенно сократит нагрузку на базу данных.
* Отключите сбор статистики. Для этого вам нужно открыть файл core/core.system.php и закомментировать $STAT->update_stats();
* После установки ExpressionEngine переконвертируйте ваши таблицы в InnoDB. Багов мною и обнаружено. Данный метод хранения существенно ускорит работу проекта при больших нагрузках.
Настройка сервера
В данном случае как владелец выделенного сервера я буду говорить о вещах, которые доступны каждому владельцу root сервера. Многие из этих вещей так-же применимы к shared хостингу.
- Используйте альтернативные веб сервера, такие как: LiteSpeed, nginx, lighthttpd. Тем самым вы существенно ускорите работу проекта и снизите нагрузу на железо.
- Установите php кешер. Мой фаворит - xCache. На мой взгляд лучший бесплатный продукт в данном сегменте.
- Установите memcache. Систему кеширования на уровне сервера. Это существенно сократит нагрузку на сервере и увеличит скорость работы веб-приложений. Особенно в тех случаях, когда скрипт может напрямую с ним работать (например vBulletin и EngineG2 (еще не вышел) *_*)
- Используйте InnoDB тип хранения в вашей MySQL базе. По тестам, данный метод практически по всем параметрам быстрее чем MyISAM.
- Грамотно настройте php.ini и my.cnf. Подстраивайте конфиги под ваш сервер. В случае добросовестной настройки, вы можете в разы получить прирост производительности и уменьшить нагрузку на сервер.
- Используйте альтернативные решения. Не стоит гнатся за массами. Если апач стоит на 40-50% серверов - это не значит, что он лучший.
- Оптимизируйте, балуйтесь, тестируйте.

Я как самоучка не претендую на 100% корректность данного гайда. Если есть какие-либо заметки, то просьба писать в адекватном виде.

Я своевременно буду пополнять данный тред, новой информацией и заметками. Не убегайте далеко и переходите на ExpressionEngine.
 
Полезная информация. Но думаю - что если кеш откл. совсем, то нагрузки - станет куда больше.
По мне кеш и делался - для того что бы снизить нагрузку на загружаемые странички.
 
кто нибудь может рассказать суть кеширования страниц
в ее 1.6 данная функция имеет аж 2 опции вкл и выкл :D

кешируется абсолютно всё и намертво
даже главная страница которая постоянно обновляется за пару часов кеш не обновляет :(
ни тебе настроек время жизни кеша (для страниц), ни тебе отключения кеша для некоторых страниц :(

настройки кешерования шаблонов есть, страниц - нет

или может я что то не понял ?


и кто такие "запросов в****га (не путаем с общим системным кешированием)."

**** - видимо всю суть слова убили - не понятно.
 
кто нибудь может рассказать суть кеширования страниц
в ее 1.6 данная функция имеет аж 2 опции вкл и выкл :D

настройки кешерования шаблонов есть, страниц - нет :D

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

кешируется абсолютно всё и намертво
даже главная страница которая постоянно обновляется за пару часов кеш не обновляет :(
есть опция очистки кешей при публикации новой страници

ни тебе настроек время жизни кеша (для страниц), ни тебе отключения кеша для некоторых страниц :(

как уже писал в шаблонах можно настроить время кеширования для каждого шаблона отдельно + можно использовать кеширование тегов...

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

вот еще думаю полезной будет статья Для просмотра ссылки Войди или Зарегистрируйся


для ЕЕ1 есть платный модуль Template Morsels, в нем можно гибко настраивать кеширования... для ЕЕ2 уже больше как платных так и бесплатных вариантов для кеширования (напр через varnish, memcached), мне например понравился CE Cache
 
Кэшировать динамические запросы к базе данных?
вот как раз про эту гадость я говорю - зло она, для большого часто обновляемого сайта эта функция совсем не подходит
это скорее для сайта что обновляют не чаще раза в неделю :D

есть опция очистки кешей при публикации новой страници
есть то оно есть но на кой чёрт сносить абсолютно весь кеш ?? не ужто нельзя чистить только кеш тех страниц на которых теоретически могли произойти изменения.
у меня это выключено
добавляется по 3-5 новостей в час соответственно время жизни кеша = 15 минутам - это не кеш это одно название.
опять же комменты ещё нет нет да пишут ... кеш и при написании коммента очищается

кеширование sql запросов не очень то рекомендуют использовать
почему ??
я первое что сделал это включил этот кеш
когда на странице куча разных выводов из разных разделов и самыми извращёнными способами это спасает от тормозов

почитал про Template Morsels - не впечатлило, кеш идёт почему то в sql а я как раз от этого хочу избавится.

единственный плюс это собирание шаблонов без инклудов, но это минус если есть переменные с одним именем находящиеся в разных инклюдах они будут пересекаться в рамках одного шаблона
у меня как раз такой случай был когда не мог понять почему переменная которая пуста проходит проверку в EE шаблонизаторе и является якобы не пустой.
пришлось в инклуды куски с этой переменной выделить.
так что не вижу смысла тратить 69$ на то что скорее всего мне не подойдёт

на счёт переезда на ee 2 постоянно задумываюсь, но в моём скрипте уже столько всего переделано (в php части да и шаблоны заумные) что я даже на 1.7 обновляться боюсь :D

такой вопросик по шаблонам EE ещё есть Для просмотра ссылки Войди или Зарегистрируйся
 
есть то оно есть но на кой чёрт сносить абсолютно весь кеш ?? не ужто нельзя чистить только кеш тех страниц на которых теоретически могли произойти изменения.
у меня это выключено
незнаю насколько это реально, ведь гибкость ЕЕ в том что в любом шаблоне могут быть любые теги и попробуй это все отследить)

добавляется по 3-5 новостей в час соответственно время жизни кеша = 15 минутам - это не кеш это одно название.
опять же комменты ещё нет нет да пишут ... кеш и при написании коммента очищается
есть же еще кеширование тегов, разным тегам можно задать разное время

почему ??
я первое что сделал это включил этот кеш
когда на странице куча разных выводов из разных разделов и самыми извращёнными способами это спасает от тормозов
дает нагрузку на i/o и по сути в самом же Mysql есть кеш который пишут эффективнее, запросов к БД может быть и больше но страничка может выполняться быстрее так как меньше нагрузка на файловую систему

почитал про Template Morsels - не впечатлило, кеш идёт почему то в sql а я как раз от этого хочу избавится.
на самом деле то что кеш в БД не так и страшно, зато файловую систему не дергаем) есть еще static page caching, но я его не использовал
 
Назад
Сверху