Это тяжелые плагины или множество плагинов, которые замедляют работу сайта?


Я часто слышал, что наличие большого количества плагинов замедлит работу сайта WordPress. Это, конечно, имеет смысл, так как чем больше кода выполняется, тем больше времени это займет.

Мне интересно, является ли медлительность в основном:

  • Результат огромного количества плагинов? (потому что WP должен выполнить некоторую обработку, чтобы найти и загрузить каждый плагин)

  • Результат наличия нескольких медленных/тяжелых плагинов?

Более практично, когда я я пишу свой собственный, должен ли я объединить функциональность в меньшее количество файлов, чтобы увеличить скорость? Или нормально иметь 10-20 плагинов, каждый из которых выполняет быструю задачу?

 6
Author: Krzysiek Dróżdż, 2010-08-19

7 answers

Общие положения

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

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

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

Особенности

Итак, давайте поговорим более конкретно. Плагины используют "крючки", которые представляют собой биты PHP-кода, которые запускают определенные точки по пути выполнения, и они могут либо что-то сделать, либо отфильтровать значение, либо и то, и другое. WordPress начинает вызывать хуки раньше в своих попытках создать веб-страницу и сгенерировать HTML для отправки в браузер и продолжает вызывать хуки почти до тех пор, пока не завершит работу для данной страницы.

В зависимости от того, какие крючки использует плагин, он может вызываться только на определенных страницах, в "фоне" или даже почти никогда. Некоторые крючки работают только в консоли администратора. Некоторые крючки работают только на определенных страницах консоли администратора. И некоторые крючки вызываются внутренней системой psuedo-cron. OTOH, некоторые плагины могут загружать дополнительные файлы CSS или JS, и каждый из этих файлов снижает производительность из-за Правила веб-производительности #1.

Если вы хотите понять, какие крючки называются на каждой странице, рассмотрите возможность использования " Крючки для инструментов для WordPress" плагин, который я написал для вопроса " Где я Могу найти Список из крючков WordPress?" Вот снимок экрана того, что плагин показывает в нижнем колонтитуле при использовании:

Screenshot of Instrument Hooks for WordPress Plugin in action

Но простое знание крючков не поможет вам точно узнать, есть ли проблема с плагином. Вы можете вызвать плагин 100 раз, и его вызов может быть незначительным по сравнению с другим вызовом крючка, который добавляет предложение WHERE в SQL-запрос, который может привести к блокировке сайта, на котором более нескольких сотен сообщений. Или он может выполнить HTTP-вызов на другой сервер. Или это могло бы сбросьте правила перезаписи при каждой загрузке страницы. Список грехов можно продолжать.

Единственный реальный способ узнать наверняка, так что проверьте крючки плагина, просмотрев исходный код или лучше запустив его через отладчик, такой как PhpStorm+XDEBUG.

Ваши собственные плагины

Не беспокойтесь о том, как организован код в целях производительности ; беспокойтесь о том, что делает ваш код. Оптимизация часто выполняемого SQL-запроса покупка с использованием переходного процесса API (См.: Презентация о переходном API) будет намного лучше для производительности, чем объединение кода 10 плагинов в один.

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

Long List of Plugins
( источник: mikeschinkel.com)

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

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

Long List of GD Star Rating Options
( источник: mikeschinkel.com)

В любом случае, надеюсь, это поможет.

 8
Author: MikeSchinkel, 2019-02-22 20:45:17

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

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

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

(Преждевременная) оптимизация - это корень всего зла. Просто больше не думайте о производительности при написании плагинов. Примите это легким и ярким способом: WordPress не разработан с точки зрения производительности, в конце концов, не совершайте ошибку и не пытайтесь написать для него эффективные плагины;)

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

 2
Author: hakre, 2013-12-11 21:34:02

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

 0
Author: bueltge, 2010-08-19 06:45:17

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

Я предполагаю, что вы спрашиваете об этом, потому что испытываете замедление? Спросите ваш хост, если вы можете что-то сделать, чтобы ускорить его, и убедитесь, что ваша конфигурация php настроена правильно.

 0
Author: rfair404, 2010-08-19 20:25:25

Вы смотрите на 2 вещи, которые замедлят работу вашего сайта: 1, обработка файлов на сервер(ы), ваш php и 2, то, как браузер считывает код.

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

RFAIR404 упоминал программы кэширования, которые помогут с запросами сервера, а некоторые будут сжимать html-код, и это напоминает мне, что мне нужно сжать некоторые css-страницы.

 0
Author: , 2010-08-25 21:52:38

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

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

Возможно, вы не заметите этого на общем хостинге со страницей 2-3 тыс. просмотров в день, но если у вас есть веб-сайт с 3 тыс. активных пользователей, каждый из которых запрашивает по 10 страниц каждый день, это может стать проблемой.

 0
Author: Krzysiek Dróżdż, 2013-12-11 21:33:46

Я бы сказал, что ответ и то, и другое.


Больше плагинов = больше медлительности

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

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

Объедините Ваши Файлы

Если вы запускаете сайт WordPress, вы обязаны сделать это ради себя, чтобы научиться:

  • Правильное объединение файлов javascript вместе
  • Правильное объединение файлов таблиц стилей вместе
  • Переместить вызовы javascript из верхнего колонтитула в нижний колонтитул

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

Кроме того, любой, кто запускает wordpress сайт должен знать, как:

  • Минимизировать файлы CSS и javascript
  • Включить сжатие сервера
  • Убедитесь, что заголовки expires снабжены сценариями и таблицами стилей

Плохо написанные плагины = большая медлительность

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

  1. Загрузка нескольких сценариев или таблиц стилей для одной страницы - см. Выше
  2. Неправильное использование базы данных - плохо написанные запросы, изменения запросов и т.д. могут оказать серьезное влияние на веб-сайт. Неспособность кэшировать результаты там, где это возможно, также может замедлить работу. Большинство людей отстой в разработке и администрировании баз данных. Когда такие люди используют базы данных, возникают проблемы.
  3. Неправильное использование wp cron - постоянные задания cron по каждому запросу пользователя поставят сервер на колени.

Не хватает написания действительно плохого кода (полубесконечные циклы, тонны регулярных выражений, где нет необходимо и т.д.), Большинство вещей не будут иметь большого эффекта, если учесть, насколько велик уже wordpress. Добавление 1 % дополнительного времени обработки - это не так уж много.


Задачи, которые от природы медленные

Есть некоторые вещи, которые просто медленные, независимо от того, насколько хорошо написаны:

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

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

 0
Author: Privateer, 2015-11-23 22:28:18