Советы по ускорению сайта Drupal

Мы только что реализовали сайт на drupal. Производительность сайта кажется проблемой. Мы включили кэширование drupal, настроили производные кэширования apache. Повторные посещения страниц выполняются достаточно быстро (поскольку CSS и JS кэшируются), но первоначальные посещения страниц по-прежнему представляют собой проблему.

Эксперты Drupal, не могли бы вы дать нам несколько советов по различным методам, используемым для ускорения сайтов Drupal. (например, DO и DONOT). Есть ли другие низко висящие плоды?

(Кстати, БД здесь не проблема. Этот слой достаточно быстр. Проблема, похоже, в слое PHP/Drupal)


person Think Floyd    schedule 02.04.2009    source источник
comment
Этот вопрос кажется не по теме, потому что он касается администрирования drupal, а не программирования.   -  person    schedule 19.07.2013


Ответы (8)


Использовали ли вы какие-либо инструменты, такие как YSlow или Firebug, чтобы определить, какие части загрузки страницы на самом деле занимают больше всего времени? Кроме того, рассмотрите возможность использования мониторинга запросов модуля Devel, чтобы определить, сколько времени уходит на выполнение запросов по сравнению с выполнением PHP-кода.

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

person Eaton    schedule 03.04.2009
comment
Я поддерживаю этот совет. Y!Slow укажет на ряд вещей. - person Randy Burgess; 03.04.2009
comment
@wrburgess, но вы должны принять мнение YSlow с долей скептицизма - оно написано для оценки страницы, которая обрабатывает миллионы запросов в секунду. - person Sean McSomething; 03.04.2009
comment
Верно. Лучшие подсказки по оценке YSlow связаны с количеством файлов изображений/css/js; Разбивка Firebug о том, сколько времени требуется для загрузки каждого файла (локального и удаленного), чрезвычайно полезна, даже более полезна в большинстве случаев. - person Eaton; 04.04.2009

Вы упомянули, что CSS/JS медленный. Вы включили «оптимизацию пропускной способности» для CSS и JS в /admin/settings/performance? Он объединяет весь CSS (или JS) в один файл, что может иметь большое значение, если у вас большое количество отдельных файлов (задержка — это убийца).

Использование кеша кода операции, такого как APC, также может сильно повлиять на производительность страницы, особенно если вы начинаем собирать модули. Я не могу представить себе возвращение к разработке PHP без его использования.

person Sean McSomething    schedule 02.04.2009

Я написал статью о производительности загрузки страниц в Drupal. Там вы найдете ссылки почти на все, что вам нужно знать об этом предмете. И, как уже отмечали другие, вам определенно следует установить кэш кода операции, такой как eAccelerator или APC. Их легко настроить, и они дают вам бесплатный прирост производительности!

person Wim Leers    schedule 05.04.2009

У вас есть URL вашего сайта?

Пара быстрых указателей:

  1. Используйте YSlow
  2. Используйте tools.pingdom.com, чтобы увидеть, есть ли что-то явно медленное
  3. Сжать js и css с помощью компрессора YUI
  4. Используйте файлы cookie только там, где это необходимо
  5. Используйте APC/Xcache
  6. Настроить параметры PHP
  7. Используйте отдельный сервер для статики. Используйте nginx
  8. Используйте лак для кеширования

ХТН.

person Jauder Ho    schedule 08.04.2009

Я нашел несколько способов ускорить Drupal. Я использовал Godaddy, который медленнее, чем и без того медленная система, но это помогло мне выявить некоторые проблемы. Кроме того, я использовал Commerce Kickstart, который даже медленнее, чем Drupal 7.

Drupal немного медленный, поэтому необходимо сделать эти вещи как можно быстрее.

  1. Вам нужно быстрое соединение с базой данных (никаких медленных сетевых подключений к базе данных).

  2. Есть некоторые параметры конфигурации, которые вы можете изменить в php.ini/.user.ini. (см. ссылку ниже)

  3. Если Drupal размещается в хостинговой компании, вам необходимо выбрать хостинговую компанию с максимально быстрым временем отклика (см. ссылку ниже).

  4. Включите кэширование Drupal.

  5. Не включайте более 50 модулей.

  6. Также выполняйте кэширование запросов с помощью MySQL, если вы используете MySQL.

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

person JTHouseCat    schedule 27.12.2013
comment
Можете ли вы указать некоторые детали в этом ответе вместо того, чтобы просто ссылаться на внешний ресурс? - person Jordan Kasper; 28.12.2013
comment
Внешний ресурс — это тот, который я написал, когда у меня были проблемы с Drupal 7 и Drupal Commerce Kickstart. Вещи, которые я упомянул в ссылке, помогли мне ускорить это, и мне потребовалась пара дней и пара хостинговых компаний, чтобы понять это. Это может сэкономить вам время, а может и нет. До вас, если вы хотите прочитать мой опыт. - person JTHouseCat; 28.12.2013
comment
Не пытаясь быть злым или что-то в этом роде, я просмотрел ссылку и думаю, что она может быть полезна для оригинального постера. Я хочу сказать, что, будучи вашим первым ответом, я хотел определить, что ищет StackOverflow с точки зрения ответов. Вы видите несколько хороших советов в разделе справки, но ключ в том, что, хотя внешние ресурсы великолепны, обычно мы предпочитаем чтобы мясо внешнего содержания цитировалось в ответе. Опять же, не пытаюсь обидеть, просто дам совет. - person Jordan Kasper; 28.12.2013
comment
понимать. постараюсь добавить больше мяса, когда я прокомментирую - person JTHouseCat; 28.12.2013
comment
Спасибо! И держу пари, если вы отредактируете это, включив некоторые детали из этого поста, он получит одобрение. ;) - person Jordan Kasper; 28.12.2013

Если вы уверены, что БД не является узким местом, то это указывает либо на время выполнения, либо на ответ сервера.

Выполняете ли вы какое-либо кэширование кода операции PHP?

Также проверьте конфигурацию Apache. Работает ли он медленно только при одновременном использовании или он замедляется только с одним посетителем?

На Drupal также есть страница, на которой описаны некоторые общие шаги: Соображения по настройке сервера

Конечно, вы можете игнорировать те, которые связаны с базой данных.

person thedz    schedule 02.04.2009

Недавно я запустил сайт на Drupal, и он работает довольно быстро. Самым большим узким местом (по словам Y!Slow) является добавленное нами приложение ShareThis. Кроме того, внешняя загрузка Google Analytics добавляет немного времени.

Кроме того, убедитесь, что у вас отключены все модули разработчика (они могут добавлять jscript и накладные расходы на стилизацию), что вы НЕ вошли в систему как администратор при тестировании и используете браузер с минимальным количеством надстроек (например, Chrome), которые могут делать обработку на стороне.

person Randy Burgess    schedule 03.04.2009

Попробуйте установить apc — http://il.php.net/apc или eccelerator — http://eaccelerator.net/

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

У меня плохой опыт работы с PHP/MySQL/Drupal в Windows, иногда проще найти неработающие LAMP. Поэтому я бы порекомендовал - бегите от установок на основе Windows.

На самом деле это не ответ stackoverflow.com ... но системный сайт еще недоступен :)

person elcuco    schedule 04.04.2009