it-swarm.xyz

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

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

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

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

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

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

6
allclaws

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

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

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

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

Конкретика

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

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

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

Screenshot of Instrument Hooks for WordPress Plugin in action

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

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

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

Не беспокойтесь о том, как организован код для целей производительности ; беспокоиться о том, что делает ваш код. Оптимизация часто выполняемого запроса SQL с использованием переходного API (см .: Представление о Transient 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
MikeSchinkel

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

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

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

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

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

2
hakre

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

0
bueltge

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

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

0
rfair404

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

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

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

0
Lucian

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

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

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

0
javajoba

Я бы сказал, что ответ оба .


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

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

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

Объединить ваши файлы

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

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

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

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

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

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

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

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

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


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

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

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

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

0
Privateer