расширение для php memcache установлено но не используется wordpress
Как включить объектный кэш (Memcache) в WordPress
Если сайт разработанный на WordPress или Woocommerce долго загружается (тормозит), не обязательно использовать Super Cache. Обычно вполне достаточно включения объектного кэша с помощью специального файла, и настроек.
Как он работает?
В отличие от глобального кэширования Wp Super Cache, объектный кэш не создаёт файлы на хостинге, и хранит результат выполнения скрипта или sql запроса в памяти. Но есть одно условие, нужно использовать специальное расширение на хостинге или сервере. Такое расширение называется Memcache, не путать с Memcached.
Разработчики WordPress изначально предусмотрели использования объектного кэша, но работать он будет в случае установки и настройки других плагинов. Возьмём для примера одну из функций движка.
В скрипте видно, если файл кэша существует, то выполнение громоздкого кода будет игнорировано. Сам же Memcache можно использовать ни только в WordPress, но и других движках, даже если нет специальных модулей или плагинов.
Что нужно для включения?
1. Убедиться что на хостинге установлен Memcache.
2. Загрузить в папку специальный файл, и в настройках включить кэширование
3. Убедиться что объектный кэш работает
Как включить?
Чтобы убедиться в наличие установленного Memcache можно написать в тех.поддержку хостинга. На хостинге beget данная услуга стоит 1-2 рубля в день (в зависимости от объёма памяти), возможно есть и бесплатные варианты, не знаю.
Можно проверить самостоятельно, для этого создаём в корне вашего сайта файл test.php, и внутри пишем следующий код:
Если расширение установлено, то продолжаем, если нет, устанавливаем и переходим к следующему пункту.
Загружаем плагин
Из архива object-cache.zip вытаскиваем Файл object-cache.php загружаем в папку «wp-content».
Открываем файл wp-config.php в главной директории сайта, и добавляем в него строчку
Как проверить работает Кэш или нет?
Во-первых скорость сайта должна увеличится в несколько раз, но время первой загрузки страницы может увеличиться из-за добавления данных в кеш.
Во-вторых установим плагин query monitor, он покажет, что используется внешнее объектное кэширвание
На вопрос стоит ли использовать объектное кэширование на маленьких проектах, отвечаю — нет не стоит. Кэширование нужно использовать на больших проектах, например в крупных интернет магазинах, у которых больше 10 000 товаров.
WP Magazine
Про WordPress на русском языке
Memcached для кэширования объектов в WordPress
Memcached является одним из самых быстрых и популярных средств для кэширования произвольных данных в оперативной памяти. В этой статье мы рассмотрим установку и настройку сервера Memcached для кэширования объектов в WordPress.
Грамотное кэширование в WordPress позволяет ускорить работу сайта, снизить нагрузку и потребление ресурсов хостинг-площадки, что особенно важно если речь идет о крупных высоко-посещаемых проектах.
Если вам не знаком термин «кэширование» советуем сперва прочитать нашу статью, где мы рассматриваем самые основы всех видов кэширования в WordPress. В статье про кэширование объектов вы узнаете подробнее о классе WP_Object_Cache и о его важной роли в ядре WordPress.
Memcached
Memcached это сервер, который позволяет быстро и эффективно сохранять данные в память с определенным ключом, с помощью которого эти данные можно так же быстро получить.
В силу своей простоты Memcached работает гораздо быстрее чем MySQL, и потребляет гораздо меньше памяти. Есть и ограничения связанные с этой простотой, например нельзя отправлять сложные запросы на выборку, поэтому полностью заменить базу данных сервером Memcached в WordPress невозможно.
Кэширование объектов в WordPress работает по тому же принципу, что и Memcached — произвольные значения или объекты хранятся в памяти под определенным ключом. Недостаток один — поскольку кэш объектов в WordPress является непостоянным, все закэшированные значения сбрасываются при следующем посещении страницы сайта.
Сервер Memcached помогает решить эту проблему и сделать объектный кэш постоянным. Это значит, что такие данные как опции сайта WordPress, пользователи, термины, записи, мета-данные и прочее, можно сразу получать из хранилища Memcached в обход базы данных MySQL.
Установка Memcached
Для того, чтобы установить сервер Memcached вам потребуется доступ администратора к вашей хостинг-площадки. Большинство провайдеров виртуального хостинга не предоставляют такой возможности, поэтому следует смотреть в сторону виртуальных (VPS) или выделенных (dedicated) серверов. Учтите так же, что на некоторых специализированных хостинг-площадках уже установлен и настроен сервер Memcached, например WP Engine.
Установить сервер Memcached легко с помощью менеджера пакетов в том или ином дистрибутиве Linux. Например в Ubuntu или Debian Linux сделать это можно с помощью утилиты apt-get :
После внесения изменений в конфигурационный файл не забудьте перезагрузить сервер:
Учтите, что перезагрузка сервера удаляет все закэшированные данные, поэтому перезагрузка на живом сайте может вызвать дополнительную нагрузку на хостинг-сервер и крайне не рекомендуется.
Memcached в WordPress
Memcached Object Cache является самым популярным и надежным плагином для кэширования объектов на сервере Memcached. Он написан Райаном Борэном, одним из ведущих разработчиков ядра WordPress.
Для работы данного плагина вам потребуется расширение memcache для PHP, которое можно найти в официальном репозитории PECL. Установить данное расширение можно с помощью команды pecl на вашем сервере:
После установки расширения (если pecl не сделает это за вас) вам необходимо будет перезагрузить PHP, чтобы интерпретатор подключил новый модуль.
Установка плагина Memcached Object Cache отличается от установки других — вам не следует размещать плагин в директории wp-content/plugins, поскольку Memcached Object Cache является не типичным плагином, а так называемым дроп-ином (или вкраплением), который выполняется на самом раннем этапе загрузки ядра WordPress, и который не возможно отключить через панель администрирования.
Дроп-ины (или вкрапления) в WordPress
» data-medium-file=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-dropins-300×108.png» data-large-file=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-dropins.png» loading=»lazy» src=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-dropins.png» alt=»Дроп-ины (или вкрапления) в WordPress» width=»766″ height=»275″ srcset=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-dropins.png 1025w, https://wpmag.ru/wp-content/uploads/2014/03/wordpress-dropins-300×108.png 300w, https://wpmag.ru/wp-content/uploads/2014/03/wordpress-dropins-768×276.png 768w» sizes=»(max-width: 1025px) 100vw, 1025px» />
Дроп-ины (или вкрапления) в WordPress
Файл object-cache.php из архива плагина следует разместить в директории wp-content, после чего плагин автоматически становится активным.
Если на данном этапе при посещении вашего сайта вы увидели «белый экран смерти», то причин может быть несколько:
Конфигурация плагина
Интерфейса для конфигурации плагина Memcached Object Cache нет. Вся конфигурация происходит с помощью PHP файла, например wp-config.php :
Первая директива определяет префикс всех сохраняемых ключей на сервере. Важно установить уникальный префикс, если сервер обслуживает более одного сайта на WordPress, иначе может возникнуть конфликт ключей.
Плагин Memcached Redux является альтернативой плагину Memcached Object Cache. Он использует класс Memcached и расширение для PHP memcached (а не memcache), которое так же можно установить из репозитория PECL.
Статистика Memcached
К серверу Memcached можно подключиться с помощью утилиты telnet и посмотреть статистику с помощью команды stats :
Статистика сервера Memcached
» data-medium-file=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-memcached-stats-300×131.png» data-large-file=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-memcached-stats.png» loading=»lazy» src=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-memcached-stats.png» alt=»Статистика сервера Memcached» width=»766″ height=»335″ srcset=»https://wpmag.ru/wp-content/uploads/2014/03/wordpress-memcached-stats.png 868w, https://wpmag.ru/wp-content/uploads/2014/03/wordpress-memcached-stats-300×131.png 300w, https://wpmag.ru/wp-content/uploads/2014/03/wordpress-memcached-stats-768×336.png 768w» sizes=»(max-width: 868px) 100vw, 868px» />
Статистика сервера Memcached
Статистику использования кэша объектов в WordPress можно посмотреть с помощью плагина Debug Bar, а если вы предпочитаете графическое представление статистики Memcached, вы можете попробовать скрипт memcache.php.
Безопасность
Важно отметить, что самой надежной защитой сервера Memcached является ограничение доступа к нему по IP адресу на уровне системы. На самом сервере Memcached защита от злоумышленников не предусмотрено, разве что аутентификация с помощью SASL в более новых версиях сервера.
Это значит, что Memcached следует использовать только в закрытых и защищенных сетях.
В Memcached так же нет пользователей и привилегий, поэтому если вы используете один сервер для двух разных сайтов, один сайт может легко получить доступ к данным другого сайта, независимо от уникальных префиксов.
WordPress.org
Русский
Время отклика сайта
Как можно уменьшить время ответа сервера?
Плагинов использую всего 7 штук, если отключить все кроме woocomerce, время сильно не уменьшается, всего где то на 40м/с
А вот если отключить Woocomerce время падает сразу до 700 м/с
Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]
Как можно уменьшить время ответа сервера?
А на бегете, насколько я помню есть Redis. Возможно стоит «заморочиться» с ним.
Но вообще ещё смотря что как сделано в WC.
Не м/с (метров в секунду), а мс (миллисекунд) 😉
Memcached и Redis на beget имеются да, но я пока не могу их оплачивать к сожалению
Установил еще плагин Hyper Cache с ним время ответа сервера показывало разное всегда:
auto-cape.ru — от 211 мс/с и до 398 мс/с
в плагине query-monitor пишет:
Объектный кэш
Попадание 87,6% (хиты 1 508, пропущено 214)
Внешнее объектное кеширование не используется
Расширение для PHP Memcache установлено, но не используется WordPress
Расширение для PHP Memcached установлено, но не используется WordPress
Расширение для PHP Redis установлено, но не используется WordPress
Расширение для PHP Zend OPcache установлено, но не используется WordPress
Ведь кэширование теперь используется или это не то что то?)
но я пока не могу их оплачивать к сожалению
Ну не знаю… что будет выгоднее ехать или ползать — это Вам решать.
Нужно смотреть его показатели — цифры. При чем именно на той странице которая «проблемная».
Ведь кэширование теперь используется или это не то что то?)
Если я правильно понял — не используется серверное объектное кеширование.
См https://wpmag.ru/2013/keshirovaniye-wordpress/
Установил еще плагин Hyper Cache с ним время ответа сервера показывало разное всегда:
Я не знаю как кеширует это плагин, но страничное кеширование для ИМ может быть спорным, если не проблемные решением.
А разные показатели «от и до» — от того насколько «прогрет» кеш (в гулояндексы — «прогрев кеша»).
Используем Memcached для кэширования объектов и страниц WordPress
Ускорить работу сайта можно по разному. Либо, перенести его на более мощный сервер, либо оптимизировать программное обеспечение существующего. Последний вариант позволит улучшить производительность не меняя «железо». В этой статье я расскажу как использовать сервер (сервис, службу) memcached для ускорения сайта на WordPress.
Я воспользуюсь возможностями сервера memcached с помощью плагинов и для кеширования объектов, и для кеширования страниц (записей) сайта.
Перед тем как начать оптимизацию WordPress желательно выполнить ряд действий для ускорения работы веб-сервера в целом. В частности, установить самую свежую версию PHP и быстрый вебсервер, например NGINX.
Самый быстрый веб-сервер
Будет хорошей практикой использовать NGINX в качестве веб-сервера, как самостоятельно, так и в паре с Apache. «Голый» Apache при большом количестве посетителей не выдерживает никакой критики по скорости работы и нагрузочной способности.
Связка NGINX плюс Apache является достаточной для большинства сайтов. Но если ваш сайт работает на PHP, то можно еще немного его ускорить используя только NGINX и режим PHP-FPM.
Не все сайты будут работать по такой схеме, некоторые нужно поднастроить. WordPress, к счастью, поддерживает такой вариант работы из коробки. И этим всегда нужно пользоваться.
Самый быстрый PHP
Новые версии PHP работаю быстрее. Особенно заметна разница между PHP 5.X и PHP 7.X — https://habr.com/ru/company/mailru/blog/326696/. Поэтому по возможности используйте самую свежую версию PHP.
Не забывает про PHP акселераторы для PHP 5.X — https://moonback.ru/page/vestacp-zendopcache. В PHP 7.X по-умолчанию уже подключен Zend OPcache и ничего дополнительно делать не надо.
Кэш наше всё!
Если все вышеперечисленное вы уже используете, а скорости все равно не хватает, то вам поможет кэширование.
Кэш — это промежуточный буфер, который позволяет хранить наиболее часто используемые данные в памяти или на жёстком диске, что позволяет существенно ускорить процесс их выдачи.
Грамотное кэширование в WordPress позволяет ускорить работу сайта, снизить нагрузку и потребление ресурсов хостинг-площадки, что особенно важно если речь идет о крупных высоко-посещаемых проектах.
Memcached для кэширования объектов
Memcached является одним из самых быстрых и популярных средств для кэширования произвольных данных в оперативной памяти.
Memcached это сервер (сервис, программное обеспечение сервера), который позволяет быстро и эффективно сохранять данные в память с определенным ключом, с помощью которого эти данные можно так же быстро получить.
Memcached работает гораздо быстрее чем MySQL, и потребляет гораздо меньше памяти. Но он не умеет обрабатывать сложные запросы, поэтому полностью заменить базу данных сервером Memcached в WordPress невозможно.
Стандартное кеширование объектов в WordPress
В WordPress есть свое кеширование объектов и оно происходит по тому же принципу, что и в Memcached — произвольные значения или объекты хранятся в памяти под определенным ключом. Но кеш WordPress является непостоянным, то есть все закэшированные значения сбрасываются при следующем посещении страницы сайта.
Сервер Memcached помогает решить эту проблему и сделать объектный кэш постоянным. Это значит, что такие данные как опции сайта WordPress, пользователи, термины, записи, мета-данные и прочее, можно сразу получать из хранилища Memcached в обход базы данных MySQL.
По сути мы кешируем базу данных MySQL, получая необходимые данные значительно быстрее.
Установка демона Memcached
Установить сервер memcached могут только владельцы виртуальных и физических серверов. Если у вас обычных хостинг, то самостоятельно эту процедуру вы выполнить не сможете. Впрочем на многих хостинг-площадках memcached уже включен, либо его можно использовать опционально, иногда за дополнительные деньги.
В CentOS должно быть не сложнее.
После установки сервер Memcached запустится сразу. Конфигурация сервера находится в файле /etc/memcached.conf, в нем вы можете настраивать такие параметры как память, адрес и порт. Эти данные вам потребуются при конфигурации плагина для WordPress.
Если вы что-то будете менять, то не забудьте перезапустить демон memcached:
Важно! Перезагрузка сервера удаляет все закэшированные данные.
Объекты WordPress и memcached
Воспользоваться возможностями memcached в WordPress для кеширования объектов можно с помощью плагина. Самый простой и при этом очень эффективный — это Memcached Object Cache. Среди его авторов — Райан Борэн, один из разработчиков ядра WordPress.
Для работы данного плагина вам потребуется расширение memcache (без d на конце) для PHP.
Как установить расширение PHP memcache
В свежих версиях Debian и Ubuntu это расширение можно установить так:
После чего необходимо перезагрузить PHP.
В случае Apache перезапускаем веб-сервер и делаем это так:
Если используете fpm-формат взаимодействия между PHP и вебсервером NGINX, то перезагружать надо не веб-сервер, а саму эту службу, например так:
где php7.4-fpm — имя вашей службы и зависит от версии интерпретатора php и у вас это имя может быть другим.
Установка плагина Memcached Object Cache
Memcached Object Cache является не типичным плагином, а так называемым дроп-ином (вкраплением), который выполняется на самом раннем этапе загрузки ядра WordPress, и который не возможно отключить через панель администрирования.
Чтобы установить плагин Memcached Object Cache, вам необходимо разместить в директории wp-content файл object-cache.php из архива плагина, после чего плагин автоматически становится активным.
Установить файл object-cache.php в директорию wp-content можно с помощью FTP-клиента или используя файловый менеджер вашего хостинга.
Важно. Директория установки плагина wp-content, а не wp-content/plugins и т.п.
Если на данном этапе при посещении вашего сайта вы увидели «белый экран смерти», то причин может быть несколько:
Как настроить плагин Memcached Object Cache
Интерфейса для конфигурации плагина Memcached Object Cache нет. Для того, чтобы он заработал, вам необходимо внести изменения в файл wp-config.php добавив в него строку:
где «…long random string…» — ваша уникальная строка со случайным набором символов.
Как отключить кеширование бъектов в WordPress с помощью memcached
Чтобы отключить кэширование объектов в Memcached достаточно удалить или переименовать файл object-cache.php в директории wp-content. Это действие не удалит данные на сервере.
Кэширование страниц WordPress
Кешировать страницы блога на WordPress я буду с помощью плагина Batcache. Он позволяет кэшировать страницы в WordPress с помощью механизма кэширования объектов расмотренного ранее. Batcache используется во многих высоко посещаемых проектах, включая сеть WordPress.com.
Что такое Batcache
Плагин Batcache нацелен на проекты с высокой посещаемостью. Он написан для выполнения только одной задачи — кэширование страниц. Основная идея плагина — использование постоянного кэша объектов WordPress для хранения данных. Это позволяет кэшировать страницы на серверах Memcached, Redis, APC и др.
Как установить WordPress плагин Batcache
До установки плагина Batcache, проверьте, что у вас работает плагин для внешнего кэширования объектов, например Memcached Object Cache, рассмотренный выше. Для конфигурирования плагина кэширования объектов вам потребуется root-доступ к вашей хостинг-площадке.
Batcache можно скачать из официального репозитория WordPress.org, но не спешите его активировать на вашем сайте. Дистрибутив Batcache содержит в себе два отдельных плагина: advanced-cache.php для кэширования страниц и batcache.php (Batcache Manager) для некоторых дополнений к основному плагину.
Активация основного плагина Batcache происходит путем копирования файла advanced-cache.php из архива в директорию wp-content. Файл (или «drop-in») advanced-cache.php является специальным для WordPress, он исполняется на ранней стадии загрузки ядра, и именно с помощью этого файла реализуется кэширование страниц в WordPress.
Важно. Директория установки плагина wp-content, а не wp-content/plugins и т.п.
После копирования advanced-cache.php в директорию wp-content, необходимо включить его обработку в файле конфигурации wp-config.php с помощью специального параметра:
Это строка должна быть выше (по тексту) подключения файла wp-settings.php.
Как проверить, что плагин работает
После объявления константы, плагин Batcache начинает автоматически кэшировать страницы. Для того, чтобы проверить его работоспособность, посетите любую страницу вашего сайта и просмотрите ее исходный код. Batcache автоматически добавит в конец страницы примерно следующую информацию:
Эта информация говорит о том, что страница была сгенерирована 179 секунд назад за 0.093 сек. Выдача страницы произошла с помощью Batcache за 0.002 сек., обновление данной страницы в кэше произойдет через 121 секунду.
Batcache не кэширует страницы для вошедших (залогиненных) пользователей. Чтобы проверить его работу лучше воспользоваться режимом инкогнито в вашем браузере (Ctrl+Shift+P в FireFox или Ctrl+Shift+N в Google Chrome).
Как настроить плагин BatCache
Настройки по-умолчанию подходят для большинства сайтов, но при желании вы всегда можете их скорректировать. А так как в Batcache нет интерфейса для настройки плагина и все параметры находятся в исходном коде плагина. То нам необходимо создать файл настроек batcache-config.php в корневой директории WordPress и подключитm его в wp-config.php следующим образом:
Эту строку необходимо разместить до подключения файла wp-settings.php, но после объявления константы ABSPATH.
В самом файле batcache-config.php необходимо объявить массив с настройками, который по умолчанию может быть пустым:
Далее в этот массив и в этом же файле можно добавлять параметры следующим образом:
В этом примере мы устанавили временной интервал 600 секунд для max_age (время жизни одной страницы в кэше).
По анологии можно изменять следующие параметры:
Подробнее обо всех переменных и вариантах тонкой настройки можно прочитать на странице плагина в GitHub — https://github.com/Automattic/batcache
Для чего нужен плагин Batcache Manager
Вспомогательный плагин Batcache Manager объявляет полезную функцию batcache_clear_url(), с помощью который можно обновить кэш по определенному адресу. В частности Batcache Manager автоматически использует эту функцию для обновления кэша главной страницы и страницы записи при ее сохранении.
Краткая инструкция по использованию Memcached в WordPress
Чтобы получить максимальную производительность WordPress сайта выполните следующие действия:
Убедитесь, что вы используете свежую версию PHP и быстрый веб-сервер на front-end, например NGINX.
Выводы
Несмотря на сложность настройки сервер memcached и плагины Memcached Object Cache и Batcache позволяют увеличить производительность вашего WordPress сайта и его стрессоустойчивость при большом количестве посещений без дополнительных затрат на «железо».
После подключения плагина Memcached Object Cache на этом блоге существенно сократилось количество обращений к базе данных MySQL.
У меня в подвале сайта есть статистика времени генерации страницы, количества обращений к базе и объем потребляемой при этом памяти WordPress.
До использования плагина Memcached Object Cache на странице с картой сайта (https://moonback.ru/sitemap) результаты были такими (это одна из самый «тяжелых» страниц в плане обращений к базе данных):
После того как я установил сервер memcached и подключил плагин Memcached Object Cache количество обращений к базе заметно сократилось:
Несколько улучшилось и время создания страницы (генерации).
После подключения плагина Batcache в случае нахождения страницы в кеше время ее создания (отдачи клиенту) не превышает несколько тысячных долей секунды, что сравнимо со скоростью работы статичного HTML сайта.
Таким образом с помощью двух плагинов мы увеличили скорость работы динамического сайта до уровня статического, а так же сократили время генерации страницы при ее первом посещении перед попаданием в кеш и для вошедших (залогиненных) пользователей.
Благодарности
При написании статьи были использованы следующие источники: