Делает ли наличие более активных модулей замедление работы сайта?


13

Делает ли наличие более активных модулей замедление работы сайта?
Я установил 30 модулей для своего сайта и боюсь, что он станет слишком медленным.

Ответы:


11

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

Например, если вы установили представления и включили только просмотр передней страницы, представления не будут выполняться, если запрошенная страница является страницей узла. Хотя модуль Views реализует hook_menu_alter(), и это выполняется, даже если вы не включили какое-либо представление, но модуль Views включен. Любая реализация hook_menu_alter()вызывается , когда меню восстановления, и это обычно не происходит на каждом запросе страницы.


6
Наличие большого количества модулей, которые ничего не делают, делает сайт немного медленнее. Это связано с тем, как работает система хуков; Drupal выполняет вызов module_hook для каждого установленного модуля каждый раз, когда запускается ловушка. Все эти проверки могут сложить. На нашем сайте module_hook вызывают 13 000 раз, и это занимает 168 мс; каждый немного складывается.
mikeytown2

15

Да. Тем не менее, 30 не о чем беспокоиться. У вас неприятности, когда вы идете за 100;)

Установите кэш байт-кода (APC или XCache), чтобы устранить большую часть замедления, включая включение большого количества файлов, и убедитесь, что периодически удаляете неиспользуемые модули (обычно каждый проект собирает модули, которые в какой-то момент времени не используются)


Я вижу, что Commerce Kickstart использует 96 модулей.
Пере

Установка XCache заставила мои страницы рендериться в половину времени. Благодарю.
Черувим

1

В дополнение к обоим правильным ответам @Bojan Zivanovic & @kiamlaluno вам следует позаботиться о взаимодействии модулей. Наличие большого количества модулей увеличивает риск плохих взаимодействий модулей (таких как взаимодействие с наркотиками). Я бы сказал, что иметь более 50 модулей становится опасно, и вам следует заранее проверить, что вы не используете несколько модулей для одних и тех же доменов задач.

Например, создание страниц с блоками, представлениями, панелями, полями, содержащими представления, блоками, содержащими представления, блоками, содержащими панели, содержащие представления, ... Идея состоит в том, чтобы получить то, что может понять обычный мозг (как составляются мои разные страницы) , Это может иметь большое влияние на производительность, когда несколько сложных режимов загрузки скрыты и связаны. Другой пример - добавление нескольких правил ACL из нескольких модулей для каждого контента.

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


Сделан ли друпал для "нормального мозга"? :)
pico34

1

Во время создания сайта следует помнить о трех вещах, которые могут ускорить работу вашего сайта drupal:

  1. Уменьшить количество модулей
  2. Проверьте журнал запросов MySQL на наличие медленных запросов и при необходимости настройте код / ​​добавьте индексы.
  3. Кеширование (и надеемся, что большинство ваших пользователей не прошли проверку подлинности)

и что касается модульной части, очевидно, что большее количество модулей будет медленнее, поскольку для обработки требуется больший объем ОЗУ.

Тем не менее, от 30 до 60 модулей не будут так сильно влиять на ваш сайт.

Соотношение времени загрузки сайта и количества модулей примерно равно 100 модулям, что задержит сайт на 350 - 650 мс.

надеюсь, что на следующем сайте вы будете помнить об этом .. :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.