Статьи

Функциональность: плагины против тем

Существует множество факторов, влияющих на производительность вашего сайта WordPress, и один из приемов, которые вам часто советуют «эксперты», — избегать плагинов. Они скажут вам, что лучше поместить функциональность в вашу тему, а не активировать плагин. Это правда?


Когда дело доходит до производительности вашего сайта WordPress, на общие результаты влияет множество факторов. Эти факторы включают в себя то, насколько хорошо написана ваша тема, количество изображений и других ресурсов, которые необходимо загрузить, насколько хорошо ваш сайт кэшируется, качество ваших активированных плагинов и многое другое. Однако два фактора, которые оказывают нулевое влияние на уровень производительности вашего сайта, — это количество плагинов (да, я на 100% серьезен) и наличие элементов функциональности в качестве плагина или части вашей темы.

Если вы выполните быстрый поиск в Google « как добавить контактную форму в WordPress », вы, вероятно, заметите серьезную тенденцию, когда дело доходит до названий учебников. Большинство уроков будут включать что-то вроде » … без плагина «. Эта тенденция, которая существует для десятков учебных тем, напоминает о том, что плагины должны быть плохими и, возможно, они снижают производительность вашего сайта. Имея слова « без плагина », которые так часто встречаются в заголовках учебников, а также в сообщениях на форумах, многие люди пришли к выводу, что лучше, особенно для производительности, включать функциональные элементы в темы (будь то ваша или одна из них). купил), а не полагаться на плагин, чтобы обеспечить его.

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


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

Неправильно, и вот почему:

«Независимо от того, загружен ли код в точке Y или в точке X, он не более эффективен».

Во-первых, единственное различие между кодом, помещаемым в тему, и кодом, помещаемым в плагин, — это время выполнения. Активные плагины загружаются и выполняются перед текущей активной темой, но кроме этого, существует нулевая разница в способе выполнения кода, содержащегося в каждой из них, а также нулевая разница с точки зрения эффективности кода. Если вам нужна отличная диаграмма процесса загрузки ядра WordPress, посмотрите этот пост в Stack Exchange .

Загружен ли код в точке Y или в точке X, это не более эффективно.

Во-вторых, с пунктом 1 мы теперь должны спросить « как тема лучше для функциональности? », Так как и код плагина, и код темы выполняются одинаково. Ответ прост. Хотя темы имеют нулевое преимущество по сравнению с плагинами при рассмотрении того, где размещать элементы функциональности, оказывается, что плагины имеют несколько существенных преимуществ по сравнению с темами. Я буду через эти преимущества через минуту.

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

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

Тогда возникает вопрос: действительно ли темы лучше, чем плагины для элементов функциональности? Короткий ответ, нет, абсолютно нет.


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

  1. Разделение кода на «куски» — это одна из лучших вещей, которую вы можете сделать для больших проектов, поскольку она значительно облегчает сопровождение всего проекта и отладку в случае возникновения проблем. Размещая ваши отдельные части функциональности в их собственных выделенных плагинах, вы эффективно создаете эти «куски». Каждый плагин поддерживается отдельно, что (как вы найдете) может значительно облегчить поиск проблем.
  2. Если что-то сломается, вы просто отключите плагин. Допустим, что контактная форма на вашем сайте интегрирована в вашу тему и ломается, что приводит к падению сайта. Чем ты занимаешься? Если у вас нет навыков или вы не знаете, как заменить контактную форму действующей, у вас большие проблемы. С другой стороны, если функциональность обеспечивается плагином, вы просто деактивируете плагин и возвращаете его в оперативный режим, как только проблема устранена, или вы решаете найти новый.
  3. Если вы когда-нибудь захотите сменить тему, как это делают большинство сайтов, по крайней мере, один или два раза, вы потеряете все свои пользовательские функции (включая короткие коды), потому что новая тема либо не будет иметь такие же функции, либо будет выполняться / построить их по-другому. Однако, если у вас есть все ваши короткие коды внутри плагина, а также такие вещи, как контактные формы, все, что вам нужно сделать, это загрузить новую тему и активировать ее: все будет работать так же, как и раньше. Разве это не достаточная причина, чтобы говорить, что плагины лучше для отдельных частей функциональности, чем темы? Я верю, что это так.
  4. Плагины могут быть обновлены и улучшены отдельно. Если вы добавляете улучшения в тему, то вся тема должна быть обновлена. Сколько раз вы видели, как пользователь темы добавляет настройки в style.css или functions.php ? Если они сделали это, они не смогут обновить тему и получить новые улучшения, не перенося вручную все свои изменения. Это предполагает, что они не создали дочернюю тему, которая должна быть у них, но у многих пользователей нет. Когда улучшения помещаются в плагин, пользователь не может ничего сделать, кроме как обновить плагин из своей панели инструментов.

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

Это теперь подводит меня к вопросу о том, плохо ли иметь много разных плагинов. Вероятно, вы можете себе представить, как быстро будет увеличиваться количество активных плагинов, если вы поместите каждый основной компонент в отдельные плагины. Это вызывает проблемы? Как насчет того, когда вы достигнете 10 плагинов? Разве это не много? Как насчет 20 или 30? Разве это не экстрим?

Нет.

Во время WordCamp Kansas City 2012 у меня была возможность поговорить с Отто , который является одним из ведущих разработчиков WordPress, а также одним из правых людей Мэтта Малленвега. Отто делает большую часть разработки на персональном сайте Мэтта, и он сказал мне, что на этом сайте работают десятки небольших функциональных плагинов. Каждый из плагинов имеет определенные задачи, и все они отлично работают бок о бок, хотя их много.

Лично я запускаю около 50 плагинов на своем сайте Пиппинов .

Дело в том, что плагины не вызывают проблем с производительностью просто потому, что они являются плагинами, даже не имея 100 или даже 200 активных одновременно. Проблемы с производительностью плагинов возникают из-за плохо написанных, а не из-за количества плагинов. Вы можете легко вызвать больше проблем с производительностью с одним плохо написанным плагином, чем с 300 простыми, хорошо написанными плагинами.

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

Я также знаю, что WP Candy постоянно работает с 80 или 90 активными плагинами.

Необходимо помнить, что количество плагинов не влияет на производительность, только качество и тип плагинов влияют на производительность.

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

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