Объектный кэш в WordPress. Кэширование в WordPress — выбираем лучший плагин для кэширования

Всем привет! В сегодняшнем посте я поделюсь с вами 17 способами, которые позволят вам ускорить блог. Мы поговорим про плагины кэширования для WordPress, а именно про hyper cache и его настройку.

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

Итак, все по порядку.

Проверка изначальной скорости загрузки сайта

Любые значения нужно фиксировать, чтобы потом можно было сравнить точку начальной скорости, а затем после всех изменений посмотреть какой скорость стала. Для этого я порекомендую несколько сервисов. Вовсе необязательно зацикливаться на каком-то одном. Лучше я дам вам побольше выбора. Начну с самого распространенного гугловского сервиса проверки скорости под названием Page Speed. Чтобы найти его в одноименном поисковике просто наберите такую фразу «google page speed test». Самый первый сайт и будет искомый. Вот ссылка на него — https://developers.google.com/speed/pagespeed/insights/

Вводим адрес нашего сайта и нажимаем «Анализировать» (Analyze)

61% из 100% по пользовательскому опыту, т.е по удобству не такой уж и удобный по версии гугла.

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

Здесь уже чуточку получше – индекс 63%.

Теперь переключимся и посмотрим, какую информацию предоставляет сервис для десктопных устройств (результат тестирования для компьютеров).

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

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

Нажимаем на кнопку «Go» (Начать) и смотрим на результаты.

Данное исследование показало, что у меня скорость загрузки уровня B, хороший, но не лучший. Средний размер страницы 868Кб, время загрузки – 4.68 секунд. Я считаю, что это плохой показатель, который нужно улучшить. Следующая метрика это Yslow, которая отражает информацию по заголовкам, запросам, кукам, редиректам, яваскриптам, данным, в общем все, что может в техническом плане «съедать» скорость говорит этот показатель. Он вообще никудышный – 72%.

Вот, что показано в отчете:

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

  1. Все изображения должны иметь разрешение по ширине и высоте (Specify image dimension)

Для картинок, что указаны выше не указаны расширения, т.е отсутствуют атрибуты width и height. Решение следующее: переходите по ссылкам и вручную указываете атрибуты длины и высоты картинок, тогда это сообщение у вас должно уйти.

  1. Defer Parsing of JavaScript (Проверка на наличие скриптов и их нагрузка на сервере)

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

  1. Использование кэша браузера (Leverage Browser Caching)

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

Решение есть: необходимо установить следующий плагин — Leverage Browser Caching Ninja.

После его установки и активации у вас появится в блога его ссылка. Нажимаете на нее:

Все, что вам нужно будет сделать, это выбрать чекбокс Enable (Активировать) и нажать на Update (Обновить). На этом шаге все файлы должны будут закэшироваться и этот показатель должен быть в норме.

  1. Оптимизация порядка стилей и скриптов (Optimize the order of styles and scripts)

Здесь я вижу кучу файлов CSS, которые нужно оптимизировать и уменьшить. Совет здесь – используйте как можно меньше плагинов, поскольку каждый из них идет со своими стилями, а нужно использовать их как можно меньше, поскольку на подгрузку каждого затрачивается время.

Решение здесь следующее – установка и активация плагина GZip Ninja Speed Compression. С его помощью вы достигните максимальной компрессии всех ваших файлов и скриптов, в результате чего скорость станет значительно выше и показатели в поисковых рейтингах (Google в особенности) будут расти. С ним разбираться особо не нужно. Также устанавливаем и активируем, затем переходим в панель администратора вашего блога и нажимаем на одноименный раздел.

Интерфейс такой идентичный предыдущему, так как разработчик общий 🙂

5. Уменьшите редиректы (Minimize Redirect)

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

Правильный выбор хостинга

Это самый важный пункт, поскольку от работы хостера зависит успех или неуспех нашего проекта. Чем быстрее работает сервер хостинга, чем меньше он находится в дауне (не отвечает), тем лучше для нас и для многих показателей. Если это возможно, то используйте VPS серверы (виртуальные), они, как правило дорогие, но очень быстродейственные. Если не устраивает по цене то могу предложить несколько вариантов. Начну с зарубежных:

  • http://www.bluehost.com/wordpress цена символическая — 2.95 доллара в месяц (чуть больше 100 рублей) + специальные условия для пользователей WordPress
  • http://sweb.ru – рекомендую так как пользуюсь сам и использую его на веб сайтах своих клиентов

Данный блок будет завершающим, поскольку информации итак слишком много оказалось. Получилась не то, чтобы статья, а целый мануал. В довесок приведу еще ряд полезных рекомендаций, которыми не стоит принебрегать при увеличение производительности блога на WordPress:

  • Удаляйте неиспользуемые темы

Если на вашем блоге помимо вашей активной темы есть еще и другие, которые не используются, но присутствуют в списке, то избавляемся от них. Особенно, если это стандартные дефолтные шаблоны от Вордпресс. Для этого нужно перейти в панель хостинга или связаться с сайтом по ФТП и войти в папку с темами «Themes» и удалить не нужные.

  • Не используйте в футере или в сайдбаре сайта

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

Сделать это не сложно. Зайдите в админку, кликните на Настройки – Обсуждение и снимите галочку с чекбокса по середине «Разрешить оповещения с других блогов (уведомления и обратные ссылки)»

  • Уменьшите количество вызовов виджетов в сайдбаре

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

  • Постоянно обновляйтесь

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

  • Используйте облегченные темы

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

Можете использовать У меня есть подборка из 67 штук. Все это бесплатно.

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

! ^ http (s ) ? : //(www\.)?feeds2.feedburner.com/wpbeginner

RewriteRule \ . (jpg | jpeg | png | gif ) $ –[ NC , F , L ]

Вместо wpbeginner.com подставьте адрес своего сайта и сохраните изменения.

А сейчас давайте посмотрим, как изменилась скорость загрузки моего блога. Чтобы было с чем сравнить. Переходим снова в наш любимый сервис GTMetrix и нажмем на ссылку Re-Test

Класс! Теперь блог стал загружаться гораздо быстрее! Есть к чему стремиться. Этот показатель я еще увеличу, когда на блоге запустится адаптивная версия Bootstrap. Сейчас ее верстаю. Кстати, решил сравнить свой блог по производительности с блогом Дмитрия (ktonanovenkogo.ru). Его сайт очень популярен в интернете и у него бешенная посещалка. Результаты ниже:

На этом все дорогие друзья. Никогда еще за все время развития сайта я не писал такие очень подробные статьи – 3200 слов (22000 знаков). Я думаю, что теперь ваши сайты будут загружаться быстрее и вы, и ваша целевая аудитория останетесь довольными. Не забывайте ставить лайки и делать репосты.. Пока!

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

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

Итак. Вот список 10 лучших кэш-плагинов для сайтов на WordPress .

DB Cache Reloaded Fix


Этот плагин — переработанная версия DB cache reloaded , которая работает на WordPress версий 3.1 и выше. Плагин кэширует SQL-запросы посетителей, присваивая им определенный срок жизни, с целью оптимизации работы сайта.

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

WP Super Cache


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

Веб-серверу легче обработать статические данные, нежели массивные PHP -скрипты.

Заранее сгенерированные HTML-страницы предназначаются для:

  • пользователей, не прошедших процедуру авторизации на сайте;
  • пользователей, не оставляющих комментарии;
  • пользователей, не просматривающих посты, защищенные паролем.

WP Total Cache


Еще один плагин, который ускорит работу вашего сайта на WordPress методом очистки кэша блога. Он имеет в своем арсенале следующие функции:

  • совместим с различными типами хостинга: виртуальным хостингом, VPS и выделенным сервером;
  • совместим с мобильными платформами;
  • кэширует ленты новостей, результаты поиска, объекты баз данных на диске и в памяти;
  • сжимает и оптимизирует ленты новостей, записи, страницы, Java-скрипты и т.д.

Заявлено, что возможно увеличение скорости загрузки блога в 10 раз. Плагин предоставляет множество средств оптимизации, таких как минимизация кода и интеграция с CDN (Content Delivery Network, Сеть доставки контента).

Hyper Cache Extended


Этот плагин является обновленной версией Hyper Cache , предоставляющей качественно выполненный функционал:

  • отлов страниц 404;
  • сжатие;
  • поддержка мобильных устройств.

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

WP fastest cache


Этот плагин также создает статические копии HTML-страниц. Это значительно сокращает время загрузки страницы.

Ниже приведены некоторые из особенностей этого плагина:

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

Quick Cache


Этот плагин довольно компактен и имеет дружественный интерфейс. Каждая опция снабжена детальным описанием.

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

WP fast Cache


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

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

Ниже перечислены самые основные функции плагина:

  • возможность кэширования постоянных ссылок, категорий, страниц, постов и так далее;
  • простое управление кэшем и многое другое.

Hyper Cache


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

Отметим некоторые функциональные возможности этого плагина:

  • кэширование страниц ошибки 404;
  • может управлять как gzip , так и обычными страницами;
  • легок в настройке;
  • может быть легко интегрирован в систему совместно с другими плагинами.

FlexiCache


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

WP File Cache


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

Он не будет эффективно работать со статическими страницами.

Перевод статьи «Top 10 Essential WordPress Cache plugins to Expedite your Website » был подготовлен дружной командой проекта

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

Польза кэширования

Небольшое отступление. Если все же кто-то еще сомневается в необходимости кэширования, то знайте, с 21 апреля Googleобъявил что все mobile-friendly сайты (а скорость - это одно из составных «friendly») получаютсущественное преимущество в результатах поисковой выдачи. Намерения Google предельно ясны – SEO-специалистам и вебмастерам необходимо работать над производительностью как десктопной, так и мобильной версии сайта.

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

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

Детали теста по кэшированию

В самом начале планировалось использовать в тестах 2 темы – простейшую «twenty-fourteen» и более сложную (которая будет имитировать «реальный» сайт). Но во время тестов оказалось, что влияние кэширования на скорость загрузки темы «twenty-fourteen» настолько минимально, что им можно пренебречь. Важнее оказалась тонкая настройка сервера, но сегодня статья не об этом.

В итоге мы будем использовать только 1 тему (тема Novelty от Tesla Themes). Тестовая страница оформлена с применением графики и текста. Также присутствует сайдбар и несколько плагинов (новости, фид из Twitter/Instagram). Хостинг использовался от WP Dev Shed. В итоге мы получили страницу с относительно большим временем загрузки.

Т.к. сайт новый, то у него не было посещаемости (в том числе, во время тестирования, не было даже ботов ПС). Сервер работал в связке Apache+ Ngnix.

В тесте участвовали следующие плагины:

  1. AIO Cache
  2. WP Fast Cache
  3. WP-Cache.Com
  4. Alpha Cache
  5. Flexicache
  6. Bodi0’s Easy Cache
  7. Hyper Cache
  8. Hyper Cache Extended
  9. Cachify
  10. Lite Cache
  11. Next Level Cache
  12. Really Static
  13. Super Static Cache
  14. W3 Total Cache
  15. Gator Cache
  16. Wordfence Falcon
  17. WP Fastest Cache
  18. WP Rocket
  19. WP Super Cache
  20. Zen Cache (formerly Quick Cache)

За тестом остались:

Brutal Cache - не работал;

Batcache - плагин с зависимостью от Memcache, что не использовалось в текущем тесте.

Autoptimize и Widget Cache также остались за бортом, т.к. они являются не самостоятельными плагинами, а поддержкой для других.

Инструменты бенчмаркинга

В качестве инструментов мы использовали сервисы от Google, GTMetrix и Yahoo. Благодаря этому тестировалась не только скорость загрузки страниц, но и:

  • оптимизация изображений;
  • минификация и оптимизация js- и css-кода;
  • использование кэширования в браузере;
  • временная задержка сервера;
  • использование Gzip-сжатия;
  • размещение скриптов;
  • количество HTTP-запросов.
  • использование CDN, распараллеливания/доменного шардинга;

Google PageSpeed Insights

Сайт проверяется как с точки зрения десктопного ПК, так и со стороны мобильного устройства. Результат выдается по 100-балльной шкале. Сервис прост в использовании, но предоставляет относительно сырой результат, не дающий полного понимания всего, что может быть улучшено.

GTMetrix и YSlow

Основаны наруководстве по повышению производительности ресурса от Yahoo. Опять используется 100-балльной шкала. Сервисы работают более, чем с 50 различными метриками. GTMetrix даже визуализирует данные в диаграмму-водопад процесса загрузки. По нашему мнению – это один из лучших инструментов для определения способов повышения производительности сайта.

Тайминг

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

ApacheBench

Служит для определения нагрузки на сайт, вычисляет максимальное количество запросов в секунду. Во время теста отправлялось 1000 запросов по 10 различным потокам. Тест проводился 10 раз. Записывался лучший результат по каждому из плагинов.

Очень известный сервис по мониторингу и тестированию сайтов. Проводилось 20 тестов с каждым плагином и с фиксацией наилучшего результата.

Простой, но полезный сервис, показывающий время полной загрузки страницы именно в вашем браузере. Это не серверный инструмент, а сервис, запускаемый локально. Мы выбрали способ загрузки через Ethernet, браузер Opera. Каждая страница была загружена 101 раз с фиксированием среднего времени загрузки.

Итак, приступим к тестам.

Google, GTMetrix и Yslow

Результат тестирования страниц сайта с использованием указанных сервисов:

Как видно из таблицы, некоторые плагины здесь никак не проявили себя - оценка такая же или очень близка к оценке без кэширования. Google поставил лучшую оценку Super cache (и для десктопа, и для мобильного устройства). В GTmetrix и Yslow лучший результат показали Fastest Cache и Rocket. Как мы уже говорили, оценка от Googleменее информативна, т.к. он использует меньше факторов при оценке.

Итак, лучшими плагинами оказались WP Super Cache, WP Fastest Cache, и WP Rocket Cache.

Тайминг

Оценочные баллы в основном показывают качество кода сайта. Это даёт понимание того, что можно сделать для ускорения сайта. При этом высокие оценки сайта не означает, что он загружается быстрее, чем другие. И в этом главная ошибка - оценочные инструменты дают обилие идей по улучшению сайта для снижения времени загрузки, но при этом само время загрузки практически не принимается во внимание. Ниже – наглядный пример (скриншот из Pingdom).

Страница заработала 96 из 100 баллов (это лучше, чем у 99% страниц любых сайтов). При этом, страница грузится около 35 секунд. Вот до чего может довести слепая оптимизация.

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

ApacheBench

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

Лучший результат показал WP Rocket. Второе и третье место поделили WP-Cache.com и WP Fastest Cache.

Результат без кэширования - 2,78 секунды. Все плагины смогли улучшить этот показатель.

Безусловный лидер – опять WPRocket. Super Cache – второй, W3 Total Cache – третий.

Здесь мы решили вывести не только средний, но и медианный результат тестирования.

Среднее время загрузки

Ситуация аналогично предыдущему тесту. Тройка лидеров не изменилась – WPRocket, WPSuperCacheи W3 TotalCache.

Медианное время загрузки

Лидер все еще WP Rocket, но при этом практически неизвестный WP-Cache.com вновь показывает весьма неплохой результат.

Не кэшированием единым

Безусловно, не всё зависит только от кэширования. Свою роль играют выбор связки Apache+Nginx, верность настройки сервера и его тип (выделенный, VPS, шаред), количество и качество (оптимизация) изображений и многое другое.

Вывод

У всех представленных плагинов разная функциональность. Некоторые до неприличия просты, другие же можно сравнить со швейцарским ножом. Super Cache, W3 и прочие аналогичные плагины часто в своей работе используют профи, знакомые с CDN и прочими хитростями. Другие пользователи (особенно начинающие) останавливают свой выбор на более простых плагинах (Lite Cache или WP-Cache.com). Кстати, WP-Cache.com, несмотря на свою малоизвестность, смог показать отличные результаты.

Какой же плагин для WordPress лучше кэширует?

На первом месте (с большим отрывом) - WP-Rocket. У него много плюсов, но есть одно НО (для многих это будет минусом) – он платный. Разработчики хотят за него $39 (причем обновления не life-time, а только год)

На втором месте (хотя учитывая бесплатность, его можно тоже поставить на первое) -WPSuperCache. Результаты почти, как и у лидера, но зато он абсолютно free!

На третьем - WP-cache.com. Смущает только то, что он последний раз обновлялся в 2014 году.

Но зато он прост, бесплатен и показывает достойные результаты.

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

Пример объектного кэширования

Рассмотрим пример кэширования SQL запроса.

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

Function myfunc() { return $wpdb->get_results("SELECT ..."); } myfunc(); // SQL запрос myfunc(); // SQL запрос myfunc(); // SQL запрос

Сделаем, чтобы функция работала с объектным кэшем. И теперь только первый вызов функции выполнит SQL запрос, а остальные будут брать данные из кэша.

Function myfunc() { // пробуем получить кэш и вернем его если он есть $cache_key = "my_cache_key"; if($cache = wp_cache_get($cache_key)) return $cache; $value = $wpdb->get_results("SELECT ..."); wp_cache_set($cache_key, $value); // добавим данные в кэш return $value; } myfunc(); // SQL запрос myfunc(); // Кэш myfunc(); // Кэш

Функции объектного кэша

wp_cache_get($key, $group, $force, $found) Получает данные из кэша по указанным ключу и группе. wp_cache_add($key, $data, $group, $expire) Добавляет данные в кэш, если кэша с указанным ключом еще нет. wp_cache_set($key, $data, $group, $expire) Добавляет данные в кэш объектов. Перезапишет кэш, если он существует. wp_cache_replace($key, $data, $group, $expire) Устанавливает/заменяет/обновляет данные указанного кэша, только если кэш уже существует, в противном случает ничего не делает (вернет false). wp_cache_delete($key, $group) Удаляет кэш по указанному ключу и группе. wp_cache_flush() Полностью очищает объектный кэш. Удаляет все элементы объектного кэша. wp_cache_add_global_groups($groups) Добавляет указанную группу объектного кэша в список глобальных групп. Нужно для мультисайта. wp_cache_add_non_persistent_groups($groups) Помечает указанную группу/группы как непостоянный кэш, т.е. который не нужно сохранять для межсессионного использования. wp_suspend_cache_addition($suspend) Временно приостанавливает добавление объектов в объектный кэш.

Где в WordPress используется объектное кэширование?

В WP такое кэширование используется практически везде: в опциях, записях, терминах, у пользователей, метаданных и т.д.

Кэширование объектов в опциях WordPress

Для примера, рассмотрим как работает кэширование объектов в опциях WordPress. Функция get_option() не создает дополнительных запросов в базу данных при множественном вызове, как раз благодаря такому кэшу.

К таким группам относится кэш, который является уникальным для всей сети сайтов.

Для каждого сайта сети к ключу кэша добавляется префикс сайта, чтобы отличать, например, кэш записи с ID 5 одного сайта от кэша записи с таким же ID 5 другого сайта. Но также в мультисайте есть объекты, которые работают для всей сети, например «Пользователи» - они и относятся к глобальным группам, к кэшам таких объектов никакой префикс не добавляется...

По умолчанию глобальными группами являются:

Users userlogins usermeta user_meta useremail userslugs site-transient site-options blog-lookup blog-details site-details rss global-posts blog-id-cache networks sites themes

В список глобальных групп можно добавить свою группу, см. функцию wp_cache_add_global_groups("my-global-group") .

Непостоянные группы

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

Иногда надо, чтобы кэш не сохранялся на постоянной основе, а работал как и прежде (только во время генерации страницы). Чтобы добиться этого, можно указать группу для создаваемого кэша объектов и пометить эту группу как «Непостоянная». Делается это с помощью функции wp_cache_add_non_persistent_groups("my-group") .

Так при сохранении кэша в группе «my-group», значение будет сохранено только в локальный кэш (в оперативную память) и не будет сохраняться в хранилище кэширующего плагина, например на сервер Memcached.

Обычно к непостоянным группам относятся группы:

Counts plugins themes

Отключение кэша объектов

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

С егодня я предлагаю вам обсудить такую интересную тему как кэширование в wordpress. Первым делом нужно уточнить что такое кэширование и зачем оно нужно? Каждому блоггеру и вебмастеру справедливо хочется чтобы его блог или сайт работал быстро. Как известно WP не обладает рекордно высокой производительность, поэтому зачастую даже хороший хостинг не способен этого компенсировать. А уж если у вас «тяжелый» контент, да еще и высокая посещаемость, дело может быть вообще беда. В любом случае есть возможность ускорить блог почему бы этого не сделать?

Д вижок WordPress, как уже было сказано выше тяжеловат по своей природе. Все дело в его «динамичности». В отличие от «статичных» платформ WP работает на PHP, который и совершает многочисленные запросы к базам данный, за счет чего собственно и формируется содержимое. К счастью, существует технология способная существенно ускорить процесс, называется она кэширование.

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

Как проводилось данное исследование? Для оценки производительности того или иного плагина использовался Apache Benchmark. Данный тест генерирует большое количество запросов, на основании чего формируется отчет о количестве обработанных сервером запросов в секунду и среднем времени передачи данных. Исходные данные: WordPress 2.9.1 на котором установлено несколько популярных плагинов - Akismet, All in SEO Pack и Google XML Sitemap. Количество трафика на тестовом блоге не велико, представлен смешанный контент - текстовый, изображения, электронные таблицы, java-скрипты. Для объективности каждое измерение повторялось несколько раз в сутки.

Я не буду приводить результаты тестирования всех плагинов, которые тестировались авторами Tutorial9, потому что смысл заострять внимание есть только на самых распространенных, ходовых и популярных плагинах. Итак, приступим:

Блог с выключенным кэшированием

Блог без активированных плагинов, показал следующие результаты:

Запросов в секунду - 13,96;
Время на каждый запрос - 716,58 мс;
Скорость передачи данных - 673,98 Кбит/сек

Как видите исходные данные не впечатляют. Давайте посмотрим что и как можно улучшить.

Плагин WP-Cache

Популярный плагин WP-Cache продемонстрировал следующий результат:

Запросов в секунду - 109,59;
Время на каждый запрос - 91,25 мс;
Скорость передачи данных - 5307,00 Кбит/сек

Заметно лучше чем без кэширования. Результат превосходит блог без активированных плагинов в среднем на 685%. Замечу что WP-Cache - давно известный плагин, который исторически пользуется популярностью.

Плагин WP Super Cache

WP Super Cache в настоящее время пожалуй более популярен чем WP-Cache. Это легко объяснимо - WP Super Cache является доработанной версией WP-Cache. Помимо того что он быстрее, он и «умнее», то есть умеет больше чем предшественник. В частности его легче устанавливать и удалять, он умеет чистить за собой «мусор» после деактивации и так далее.

Что же касается скорости, результат получился следующий:

Запросов в секунду - 118,23;
Время на каждый запрос - 84,58 мс;
Скорость передачи данных - 5743,07 Кбит/сек

Результаты тестирования превосходят результаты WP-Cache. WP Super Cache в среднем быстрее блога без активированного кэширования в среднем на 747%. Отмечу еще одну особенность - если в WP Super Cache включена компрессия , он может быть даже медленнее блога без плагинов!

Плагин Hyper Cache

Hyper Cache - достаточно новый плагин, который еще не успел завоевать большой популярности. Тем не менее, показал в ходе тестирования отличный результат. Кроме того плагин отличается достаточно простой установкой и настройкой.

Результаты:

Запросов в секунду - 130,75;
Время на каждый запрос - 76,48 мс;
Скорость передачи данных - 6325,36 Кбит/сек

В среднем это лучше на 837% чем блог без плагинов.

Итоги работы плагинов кэширования для wordpress

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

Лучший результат показал Hyper Cache , к тому же он обеспечивает хороший контроль над процессом. Вполне можно использовать WP-Cache или WP Super Cache. И тот и другой заметно повышают производительность. Кроме того они из когорты «старых добрых», проверенных поколениями, а значит неплохо поддерживаются. Надеюсь, эта статья помогла вам определиться с выбором плагина для кэширования. Дело за установкой!

Что касается меня, то я использую и для своих и для клиентских сайтов платный премиум плагин WP Rocket, ну и конечно серверное кэширование средствами Nginx или LiteSpeed

А какой плагин для кэширования wordpress используете вы и почему?