Текст площадки «Складчик». Упомянутые цены и обещанные результаты могут быть неактуальны; условия покупки проверяйте у продавца.
Меня зовут Спарт. На Складчике я уже не первый день. Вы можете посмотреть другие складчины, которые я проводил в моем профиле.
Читать полное описание
Предыдущая складчина
Привет!
Меня зовут Спарт. На Складчике я уже не первый день. Вы можете посмотреть другие складчины, которые я проводил в моем профиле.
Уже почти 10 лет я занимаюсь разработкой софта, а так же созданием сайтов и дорвеев. Все это время я так же плотно работаю с вордпрессом. Помимо знания внутреннего устройства движка, я так же создаю программы для публикации статей в WP. А сегодня я хочу рассказать о плагине для WordPress который я активно развиваю последний год.
Плагин разрабатывался для дорвеев, но это не значит, что он может быть использован только на дорвеях. Это значит, что плагин способен оптимизировать нагрузку так, что на одном сервере может разместиться гораздо больше сайтов чем в обычном, привычном для обычных блогов режиме работы. При этом весь функционал движка сохраняется и даже дополняется. А в новой версии, которая представлена в этой складчине, он так же дополнительно оптимизирован для работы на белых проектах.
Существует мнение, что WordPress медленный и ресурсоемкий. Это не совсем так. WordPress распространяется как движок для блогов, а это означает, что он должен работать на большинстве хостингов и выполнять свою функцию - ведение блога. Например, если писать по два поста в неделю, то через 3 года на блоге будет около 300 статей. При средней посещаемости такой блог будет работать нормально и с нагрузкой справится практически любой хостинг, 10 таких блогов спокойно разместятся на слабом VDS севере. Но, если хотите, чтобы на хостинге или сервере поместилось больше сайтов или чтобы ваши сайты загружались быстрее, то будьте готовы к тому, что движок придется немного доработать.
Я делаю дорвеи на WordPress. Я делаю их тысячами и на каждом дорвее тысячи страниц. И размещать по 10 дорвеев на одном VDS мне никак не хотелось, это элементарно не выгодно.
Да, можно делать дорвеи на обычном html, так называемая статика. Да, она работает быстрее и требует меньше ресурсов. Но у статики есть один огромный недостаток, она лишена интерактивности. Для статики необходимо создавать шаблоны, а так же в нее сложнее добавлять новый функционал, который в WordPress реализуется с помощью плагинов в два клика. А вот проблему со скоростью и нагрузкой в WordPress можно победить.
Итак, я начал искать решение, как увеличить скорость загрузки WordPress и снизить нагрузку на сервер. Я перепробовал все доступные мне плагины кэширования, а так же перелопатил все доступные статьи и форумы на эту тему. Что меня удивило, некоторые популярные плагины только увеличивали нагрузку на сервер, особенно на этапе создания кэша. Дело в том, что подобные плагины хранят настройки в базе данных WordPress и для своей работы они загружают движок, даже чтобы просто отдать кэш. Это в корне не верный подход, потому что так вся польза кэширования теряется, ведь мы делаем кэш, чтобы не загружать WordPress. А для продуктивной работы такие плагины требуют сложной дополнительной настройки, что не вариант для массового создания сайтов.
Так же мне не нравятся различные маркетинговые ходы, которыми часто изобилуют крупные плагины. Многие функции реализовываются ради того, чтобы было БОЛЬШЕ функций, что только еще больше запутывает и что самое печальное, увеличивает нагрузку на сервер.
В итоге, я не нашел кэширующий плагин, который бы меня полностью удовлетворил, особенно в плане производительности.
Так у меня появился свой плагин кэширования. Я хочу обратить ваше внимание, что изначально я не планировал делиться этой разработкой с общественностью, поэтому даже название плагина было максимально лаконичным, просто d, а чуть позже я переименовал его в d-wp для лучшего звучания. В этом плагине нет следов маркетинга или функций ради количества. Например, он не предлагает множество различных способов кэширования. Зачем мне 5 способов кэширования? Мой плагин предлагает один, но максимально эффективный способ. Это кэширование работает быстрее статики, а так же занимает меньше места на диске, создает меньшую нагрузку на сервер и экономит трафик. И для этого надо поставить одну галочку в настройках, просто чтобы его включить. Все!
На новый сервер я установил WordPress и добавил в него статью. Затем я открыл эту статью в браузере и сохранил ее в html, чтобы создать ее статичную копию и залил ее на этот же сервер в корень сайта. Так мы можем узнать скорость загрузки статики при прочих равных.
Перед каждым измерением я сбрасывал кэш браузера.
Чистый WordPress
Сначала я загрузил тестовую страницу без каких-либо плагинов.
454 миллисекунды. Это будет наше исходное значение, от которого мы будем отталкиваться.
Статика
Затем я открыл статичную html страницу, это еще одно наше исходное значение.
167 миллисекунд. Это почти в 3 раза быстрее обычного WordPress.
WordPress Super Cache
Затем я активировал популярный плагин кэширования WordPress Super Cache. И открыл страницу для того, чтобы плагин ее закэшировал. Это так называемый холодный старт. То есть плагин даст вордпрессу сгенерировать страницу, затем он ее закэширует, чтобы при следующем обращении к этой странице отдать кэш.
880 миллисекунд! Это в 2 раза больше обычного вордпресса без плагинов! Я думаю это дополнительное время ушло на какой-то хитроумный механизм сохранения. К слову, я эти цифры не стал тут приводить, чтобы не перегружать информацией, но нагрузка на сервер при этом у меня увеличилась примерно на 30% по сравнению с обычным WP. А представьте, если бы мы добавили еще несколько плагинов, например, для SEO и прочего. И время и нагрузка были бы еще больше.
Теперь, после того, как WordPress Super Cache создал кэш страницы, я загрузил ее снова, чтобы оценить, как быстро он отдаст ее из кэша.
250 миллисекунд. Это быстрее обычного вордпресса практически в 2 раза.
d-wp
Затем я удалил плагин WordPress Super Cache, поставил d-wp и сделал холодный старт для d-wp, чтобы он смог создать кэш.
Холодный старт d-wp занял 424 миллисекунды. Это на 10% быстрее обычного WordPress без плагинов. Так же я хочу отметить, что для чистоты эксперимента, в d-wp был отключен кэш базы данных, при включенном кэше делалось бы процентов на 30 меньше запросов к БД, что увеличило бы скорость загрузки еще больше, зато при этом были включены все другие функции, например, SEO оптимизация и очистка кода. Таким образом, d-wp делает WordPress быстрее уже на этапе создания кэша, при этом нагрузка на сервер становится только меньше за счет оптимизации.
Горячий старт с d-wp, когда он отдает страницу из кэша.
70 миллисекунд! Это в в 6,5 раз быстрее обычного WordPress, 3,5 раза быстрее WordPress Super Cache и более чем в 2 раза быстрее статики!
Думаю какие-то дополнительные комментарии тут излишни, цифры все сказали.
До того, как страница попала в кэш, она будет генерироваться вордпрессом и создавать определенную нагрузку. Поэтому следующим этапом я занялся оптимизацией самого движка.
В самой основе плагина лежит маниакальный принцип экономии ресурсов. При этом функционал не только сохраняется в полном объеме, но и расширяется. Экономится каждый запрос в базу данных, каждый байт оперативной памяти, каждый байт жесткого диска и каждый такт процессора. Именно поэтому свои настройки скрипт хранит не в базе данных, а в константах. Что-то, что может загрузиться быстрее представить тяжело. Для считывания всех настроек плагину нет необходимости загружать движок. Таким образом плагин загружается до вордпресса и оптимизирует различные процессы. К слову весь конфиг плагина хранится в одном файле, который легко переносить между сайтами. Таким образом, настроив плагин один раз, перенести его настройки на другой сайт очень просто.
Следующее, что я сделал для оптимизации это кэширование запросов в БД. Это помогло снизить нагрузку на базу данных примерно в 1,5-2 раза, а так же уменьшить потребление памяти и снизить нагрузку на процессор. Что опять же позволило увеличить скорость загрузки сайта и, что немаловажно, снять нагрузку с БД. Когда просыпаешься с утра и видишь, что 50 твоих сайтов не доступны, потому что база данных лежит... Или, если говорить о хостинге, то он просто автоматически отключит ваш сайт и предложит поменять тариф на более дорогой, если ваш сайт превысит нагрузку на БД... Думаю о необходимости кэширования запросов к БД я сказал достаточно.
Следующим этапом я начал реализовывать функционал других плагинов, которыми я пользовался. Это все, что касается SEO, очистки кода, отключения ненужного функционала, увеличения скорости загрузки и т.д.
Вы можете услышать мнение, что мол зачем нужен твой плагин, тем более платный, если все это можно реализовать установив набор бесплатных плагинов. Звучит логично, но опыт показывает, что это не совсем так. Ряд факторов может привести к тому, что набор бесплатных плагинов может обойтись гораздо дороже.
Во-первых, большинство бесплатных плагинов для WordPress написаны для такого же штатного режима использования, для создания среднестатистических блогов, на который рассчитан и сам движок. Подобные плагины тестируются на одном сайте, в одиночестве, где и нагрузка видна меньше да и не рассматривается как критичный фактор. Мой плагин тестируется одновременно на тысячах сайтов и эти сайты размещаются на VDS серверах по 50 шт, там, где обычный WordPress потянул бы максимум 10 сайтов при той же посещаемости. Можно сказать, что он тестируется в экстремальных условиях.
Во-вторых, большинство плагинов не стесняются хранить свои многочисленные настройки в базе данных. Каждое очередное считывание такой настройки это очередной запрос к БД.
В-третьих, многие плагины существуют довольно давно, а это значит, что они напичканы костылями для поддержки древних версий WordPress. Это дань их популярности и на их производительности это отражается не лучшим образом.
Следующий очевидный недостаток заключается в том, что чем больше плагинов вы загружаете, тем больше на это требуется ресурсов. Так устроены языки программирования, под каждый плагин выделяется немного памяти и тратится немного процессорного времени.
Ну и напоследок, скажу, что подобные плагины не всегда полностью совместимы, что не всегда ясно с первого взгляда и часто такие проблемы обнаруживаются со временем.
Таким образом, вместе с функционалом бесплатных плагинов вы часто получаете балласт, в виде различных костылей, функций созданных ради количества, лишних запросов в базу данных, дополнительной нагрузки, различных копирайтов и прочего и прочего. А теперь умножьте это на количество плагинов, а затем на количество сайтов, а затем на количество посетителей. В итоге в памяти висит множество процессов, так как каждый запрос обрабатывается очень долго и пока он еще не успел обработаться, поступает следующий. Все это увеличивает нагрузку на сервер, он начинает тупить и в итоге сайт загружается гораздо дольше.
d-wp снимает нагрузку с сервера и что не менее важно, а возможно даже и более, заставляет загружаться сайт практически моментально. Возможно вы слышали о том, как крупные интернет магазины сокращали время загрузки страниц на одну секунду и прибыли вырастали многократно? Это происходит потому, что пользователь быстрее видит контент, а не закрывает сайт не дождавшись загрузки, на что и поисковики реагируют соответствующим образом, ведь хороший поведенческий фактор является хорошим сигналом на который они дают еще больше трафика. Это ведь в крайней степени логично. Когда цель поисковой системы максимально быстро предоставлять информацию, разве в таком случае она будет отдавать предпочтение медленным сайтам? И этим никак нельзя пренебрегать.
Итак, почему мой платный плагин дешевле набора бесплатных плагинов. Во-первых, чем меньше нагрузка на сервер, тем дешевле ваш тариф у хостера, который вы оплачиваете каждый месяц. Во-вторых, чем быстрее загружается ваш сайт, тем выше его позиции в поисковых системах, а значит и больше посетителей, а значит и больше профит. В итоге вы и экономите и зарабатываете больше. И я хочу напомнить, что это не мои фантазии, это мой практический опыт.
увеличена стабильность плагина
улучшен механизм сохранения конфига
улучшена навигация по настройкам, оптимизирована админка
улучшены функции очистка кода: удаление emojii из tinymce, улучшена функция удаления короткого URL поста, возможность удалять ссылки next и prev из метатегов, возможность удалить canonical ссылку, возможность отключить RestAPI и др.
улучшена обработка title
возможность отключения архивов (дат, тегов, авторов), пагинации постов и страниц вложений
возможность удаленного управления плагином
возможность выполнить php код до запуска движка или отдачи кэша (например, для клоакинга)
кэш разделен на кэш страниц и кэш индексных страниц
автоочистка кэша статьи при изменении или удалении статьи
автоочистка кэша статьи при одобрении комментария
возможность автоочистки кэша всех статей при публикации новой статьи
возможность автоочистки кэша индексных страниц при публикации новой статьи
возможность задать время жизни кэша
php-вставки в контент
возможность отключить кэширование php-вставок (при этом сами страницы будут кэшироваться, а php вставки обрабатываться каждый раз при загрузке страницы)
возможность делать вставки до или после контента (текст, html, css, js, php)
новая версия полностью совместима со старой, обновить можно заменив файлы
Можно использовать плагин на неограниченном количестве сайтов.
Открытый исходный код.
Обновления бесплатные.
В качестве бонуса расскажу, как без плагинов оптимизировать WP для меньшего потребления ОЗУ, защитить админку и уменьшить нагрузку на сервер в приватной теме. А так же отвечу на вопросы о дорвеях на WordPress.
Традиционно создам приватную тему, где отвечу на ваши вопросы по дорвеям на WordPress и не только. В прошлой складчине мы наговорили уже 26 страниц полезной информации.