19 простых методов ускорить сайт на Друпале [уровень: продвинутый новичок]

Вс, 04/10/2015 - 05:53

Данная информация - вытяжка для продвинутых новичков. Чеклист для более продвинутых составляет около 60 пунктов.

Скорость сайта это один из его самых важных параметров. Если сайт будет загружаться долго, то посетитель просто уйдет c сайта, не дождавшись загрузки. Гугл так же стал обращать внимание на скорость загрузки сайта и понижает позиции сайта, если он медленный.  

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

Есть два классных инструмента для проверки скорости сайта - YSlow и GTmetrix,  их нужно использовать после каждого внесения изменения. Записывай ключевые параметры измерений (загрузку страницы, размер страницы, число HTTP запросов и общую оценку в баллах) перед каждым внесением изменений, чтобы быть уверенным, что ты двигаешься в правильном направлении. Также можно попробывать JMeter и Apache Bench.


Читать далее...

6 Спасибо

Комментарии

Аватар пользователя Garin33
1 год 6 months назад Garin33 #
ttenz написал:
Выключи Update Manager

Update Manager обращается к Drupal.org, чтобы проверить нуждаются ли модули на сайте в обновлении. Проверяя, он добавляет нагрузку на сайт.

Update Manager лучше запускать на версии сайта для разработки, а не на живом сайте.

Это из серии "вредные советы".
Остальное большинство тоже масло масляное маслом - можно было бы заменить одни пунктом "все кешировать". Хотя кому-то может и пригодится.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
Garin33 написал:
Хотя кому-то может и пригодится.

мне лично очень пригодилось, я увидел много ньюансов для новичков.

Garin33 написал:
одни пунктом "все кешировать"

это да, но здесь как.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
kosHta написал:
это как то сказывается на рейтинге у поисковиков? В смысле переиндексация, падение уровня и прочее

так поисковик по-любому видит его как, переиндексации не требуется: http://www.evolvedwebsites.com.au/googlebot/

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

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
kosHta написал:
Спасибо за ответ, вникал в модуль - понравился

не за что. boost вообще классный модуль, но вся его сила только для анонимов.

0 Спасибо
Аватар пользователя sumerian
1 год 6 months назад sumerian #

ttenz, спасибо! я в закладки добавил, просто даже как чеклист. Вся инфа в одном месте.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
sumerian написал:

не за что. я очень рад, тем более инфа очень полезная, если читать внимательно, п.ч. после этого уже можно делать настройку на серверной части (redis, memcache и т.п.).

0 Спасибо
Аватар пользователя dashiwa
1 год 6 months назад dashiwa #

Может стоит запихать это все в одну фичу? Чтоб нажал на кнопку и все заработало..

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
dashiwa написал:
стоит запихать это все в одну фичу

ttenz написал:
YSlow и GTmetrix, их нужно использовать после каждого внесения изменения. Записывай ключевые параметры измерений (загрузку страницы, размер страницы, число HTTP запросов и общую оценку в баллах) перед каждым внесением изменений, чтобы быть уверенным, что ты двигаешься в правильном направлении.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
kosHta написал:
свою работу оптимизировать

так это гешефт на ровном месте, почему бы не воспользоваться?

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
kosHta написал:
Разумно, я конечно озадачен, но видимо так надо.

клиент: "сайт - тормозит" - а у тебя предложение (платное), бустиш - клиент счастлив - ты при деньгах.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
kosHta написал:
на слабом клиентском сервере реакцию

так это и рассчитано на слабый сервер.

0 Спасибо
Аватар пользователя Chyvakoff
1 год 6 months назад Chyvakoff #
kosHta написал:
Сам я никак не Сеошник, по бусту смущает то, что сайт становится хтмльным

Вы и не программист так же.

0 Спасибо
Аватар пользователя dashiwa
1 год 6 months назад dashiwa #

Вижу несколько модулей, которые могли бы включить в ядро..
Fast 404
Advanced CSS/JS Aggregation
Boost
Entity Cache

0 Спасибо
Аватар пользователя drupby
1 год 6 months назад drupby #
ttenz написал:
Entity Cache  кеширует всю сущность в таблице кэширования (cache table). Каждая загружаемая сущность становится просто одной строчкой в таблице кэширования базы.

Я бы еще добавил Display Cache http://drup.by/articles/entity-cache-i-display-sache-kompleksnoe-keshirovanie-sushchnostey

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
drupby написал:
Я бы еще добавил Display Cache

спасибо.

0 Спасибо
Аватар пользователя Orion76
1 год 6 months назад Orion76 #

Вы что-то имеете против кэша?-)
Если на более 1000(цыфра с потолка) показов материала его контент меняется тольео 1!! раз, то здравый смысл просто истерит:
нахрена эти сотни запросов к БД, сотни хуков и километры остального кода для генерации вывода на каждый пук запрос страницы, когда достаточно одного!! cache_get (1 запрос к БД к одной таблице по индексу)!!???

Меняем цыфру с потолка и считаем, какая экономия ресурсов сервера.

Для тех, кто не сильно в теме или не очень заморачивается, инфа в топике должна быть достаточно полезной..

0 Спасибо
Аватар пользователя marazmus
1 год 6 months назад marazmus #

У меня был случай, когда включенный кеш блоков добавлял нехилых тормозов. Правда это был сложняк с Solr + Search API, причем разобрался я в проблеме не сам, отличные ребята помогли. Так что не всегда кэш это панацея :)

Так что камрадам, для которых данная статья откровение, советую не следовать тупо по чеклисту, а сперва хотя бы приблизительно понять, что и как работает в каждом совете.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
marazmus написал:
советую не следовать тупо по чеклисту, а сперва хотя бы приблизительно понять, что и как работает в каждом совете.

+ эту статью нужно читать очень очень внимательно, много нюансов:

ttenz написал:
«Есть два классных инструмента для проверки скорости сайта - YSlow и GTmetrix, их нужно использовать после каждого внесения изменения. Записывай ключевые параметры измерений (загрузку страницы, размер страницы, число HTTP запросов и общую оценку в баллах) перед каждым внесением изменений, чтобы быть уверенным, что ты двигаешься в правильном направлении. Также можно попробывать JMeter и Apache Bench.»

0 Спасибо
Аватар пользователя mozh
1 год 6 months назад mozh #
Garin33 написал:
Views Content Cache решает эту проблему. Он проверяет изменился ли контент и, если контент изменился, то кэш обновляется.

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

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
mozh написал:
моудль не обновляет кеш

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

+ почитайте https://www.drupal.org/node/871274

NB! «You only really need to set a minimum lifetime if your cache segments are being updated very regularly, say on a busy site where a new blog post is added every five seconds. A maximum lifetime will be useful if your view contains time sensitive data, like: 'Posted 3 hours ago' or to ensure that the data is correct, views content cache isn't perfect and the maximum lifetime allows you to ensure that at least once a day, for example, the cache is 'flushed'.»

+ посмотрите https://vimeo.com/93549149

0 Спасибо
Аватар пользователя mozh
1 год 6 months назад mozh #
ttenz написал:
You only really need to set a minimum lifetime

Спасибо, попробуем поставить минуту вместо none,хотя интуитивно это непонятно

0 Спасибо
Аватар пользователя dashiwa
1 год 6 months назад dashiwa #

Вы разводите пользователей на деньги и жалуетесь что вам как бы хамят.

0 Спасибо
Аватар пользователя dashiwa
1 год 6 months назад dashiwa #

Производительность как и безопасность сайтов очень обьемная и сложная тема..
Для примера посмотрите и зацените такую книжку
http://chimera.labs.oreilly.com/books/1230000000545/index.html
Это общие сведения.
Есть, кстати по друпалу хорошая..

0 Спасибо
Аватар пользователя ХулиGUN
1 год 6 months назад ХулиGUN #
kosHta написал:
Вот поэтому тебе на Друпале и скучно.

ХулиGUN написал:
буду... о, хирургом

Всегда ж можно ж зашить, отдебажить и если шо - переоперировать)))

0 Спасибо
Аватар пользователя lipinart
11 months 4 недели назад lipinart #

И серваку REBOOT )

0 Спасибо
Аватар пользователя sumerian
1 год 6 months назад sumerian #
kosHta написал:
ориентированы на программеров?

после того как я начал развивать остальные пальцы в друпале, он начал становиться легче. В смысле ты просто берёшь и делаешь что нужно, вместо чтения кучи интернета, установки 2-3 модулей, пытаешься понять как они работают, и почему не делают что тебе надо, или не так делают. И судя по тому как оно там всё устроено и по количеству контриба - мне кажется что таки да, больше на программеров.

0 Спасибо
Аватар пользователя Enemy
1 год 6 months назад Enemy #

добавил себе как чек лист перед сдачей проекта

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
orion76 написал:
Иногда лучше молчать, чем говорить..

"И глупец, когда молчит, может показаться мудрым, и затворяющий уста свои--благоразумным"

0 Спасибо
Аватар пользователя Orion76
1 год 6 months назад Orion76 #

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

А с другой стороны.. А кто будет тем камазом??

все.. вечер философии объявляю закрытым..

0 Спасибо
Аватар пользователя gor
1 год 6 months назад gor #

ttenz, рекомендую добавить пункт установки и настройки
D7 https://www.drupal.org/project/filecache
D6 https://www.drupal.org/project/cacherouter
С обязательным хранением views кеша на диске.

На примере DH Elastic, это существенно снижает нагрузку на MySQL Bandwidth и если IO на хостинге не забито, будет прирост в производительности и вес базы меньше.

0 Спасибо
Аватар пользователя bsyomov
1 month 3 дня назад bsyomov #

Вся проблема в том, что это может работать как лучше, так и хуже кеша в базе. И чтобы выбрать решение надо довольно хорошо разобраться как, и когда применять, Или проводить масштабное тестирование обои вариантов снимая показания довольно долгое время - io может садиться в определённые часы и.т.п.
Т.е. это ну совсем не на новичков, даже продвинутых на самом-то деле.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
kosHta написал:
Может быть есть ещё какое то условие?

т.к. владелец vps это уже не новичок, то

под nginx, он по другому настраивается http://www.drupal.ru/node/103671

+ https://github.com/perusio/drupal-with-nginx/blob/D7/apps/drupal/drupal_boost.conf

+ чисто моё имхо на собственном vps на nginx, большого смысла нет, на нём можно использовать более эффективные серверные методики (мне нравится redis), но для шаред boost - однозначно, да.

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
gor написал:

ttenz, рекомендую добавить пункт установки и настройки

спасибо gor, добавлю.

0 Спасибо
Аватар пользователя Chesla
1 год 6 months назад Chesla #

Отличная тема!
В закладки! Однозначно!!!

0 Спасибо
Аватар пользователя deb
1 год 6 months назад deb #
gor написал:
С обязательным хранением views кеша на диске.

Очень странный модуль. Чем файловое хранение лучше мускла? Выборка по первичному ключу в мускле работает очень быстро. Короче польза от такого модуля крайне сомнительна.

0 Спасибо
Аватар пользователя dashiwa
1 год 6 months назад dashiwa #
deb написал:
Чем файловое хранение лучше мускла?

Операций гораздо меньше.

0 Спасибо
Аватар пользователя gor
1 год 6 months назад gor #
deb написал:
Очень странный модуль. Чем файловое хранение лучше мускла? Выборка по первичному ключу в мускле работает очень быстро. Короче польза от такого модуля крайне сомнительна.

у MySQL возникают проблемы производительности после 20МБ/сек трафика (in out из базы данных)
VIEWS - генерирует этот трафик. И чем больше у вас представлений и данных тем больше трафика.
По сути получается что большая часть времени тратится на получения этих данных из базы нежели на их выборку.
В итоге при переносе на файловый кеш, нагрузка уходит на IO дисковой системы, которая лучше рассчитана на такие нагрузки.
По сути разница получается между "IO по сети + IO по файлу базы данныхх" и "IO по диску". Это позволяет сохранить производительность базы данных для целевого использования, вместо хранения кеша.

Альтернативно можно хранить кеш в memcached но его установка на большей части хостингов не доступна или требует определенных знаний от пользователя.
Опять же memcached использует память для хранения кеша. Она более дорогая чем дисковое пространство.
Тут уже надо смотреть на конкретный проект.

В то время как использование filecache (cacherouter) дает мгновенный результат.
На примере DH.Elastic стоимость хостинга падает в разы для клиента.

0 Спасибо
Аватар пользователя bsyomov
1 month 3 дня назад bsyomov #

«у MySQL возникают проблемы производительности после 20МБ/сек трафика (in out из базы данных)»
Это просто не так. Это зависит от сети, железа, настроек и.т.п. Т.е. эта фраза, в реальности, отражает один конкретный кейс, и не связана с Mysql вообще. Нет у него такого архитектурного ограничения. В вашем конкретном случае это так работает не более того.

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

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

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

Резюме по этому поводу: Да, иногда, файловый кеш лучше. В реальности, это не так и часто. Дисковый IO на большинстве хостингов является бутылочным горлышком, особенно, на не дорогих VPS.

0 Спасибо
Аватар пользователя ihtiandr
1 год 6 months назад ihtiandr #

И от меня спасибо, в закладки! Ускорение друпала - вечная, неисчерпаемая тема.

0 Спасибо
Аватар пользователя ХулиGUN
1 год 6 months назад ХулиGUN #
gor написал:
Альтернативно можно хранить кеш в memcached

А так же любое key-value хранилище)))
Чилик, вон, tarantool вертел - говорит классная весчь, однако я особых различий с redis не вижу
И однако большой + за правильное использование БД

0 Спасибо
Аватар пользователя Диана
1 год 6 months назад Диана #
ttenz написал:
Кэширование представлений очень классная штука

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

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
Диана написал:
с бесконечным скроллом

кастом?

0 Спасибо
Аватар пользователя Диана
1 год 6 months назад Диана #
ttenz написал:

[module=Views Infinite Scroll]

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
Диана написал:
Views Infinite Scroll

для начала бы попробовал time-based кэширование вьюз, без доп модулей.

+ исчезают ли, если заменить на лайт пейджер?
+ я бы ещё попробывал Loads More (Views infinite scroll использует свой собственный аякс запрос)

0 Спасибо
Аватар пользователя Диана
1 год 6 months назад Диана #
ttenz написал:
исчезают ли, если заменить на лайт пейджер?

неа) даже без кеширования

вопрос, риторический. Но в чем вообще прелесть CMS-сок, если модулями не пользоваться? )))

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
Диана написал:
вообще, вопрос, наверное, риторический

понятно, т.е. проблема в Views infinite scroll, попробуйте найти ему альтернативу или немного его подстроить (число выводимых итемс и т.п.)

0 Спасибо
Аватар пользователя Диана
1 год 6 months назад Диана #
ttenz написал:
число выводимых итемс и т.п.

Поэкспериментирую. Спасибо!

0 Спасибо
Аватар пользователя ttenz
1 год 6 months назад ttenz #
Диана написал:
Поэкспериментирую. Спасибо!

пока не за что. ajax во вьюхе не включен?

0 Спасибо
Аватар пользователя Диана
1 год 6 months назад Диана #
ttenz написал:
ajax во вьюхе не включен?

отключен

0 Спасибо

Страницы