WordPress Super Cache плагин, используем кэш браузера. Как настроить кэширование wordpress? Где находиться время кэша в вордпресс

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

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

Небольшое отступление. Если все же кто-то еще сомневается в необходимости кэширования, то знайте, с 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 году.

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

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

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

Что такое кэш?

Кэшем (cache) называется такое место в компьютерной памяти, где хранятся данные для будущего использования. Например, вместо того, чтобы полностью выполнять процесс по загрузке сайта из базы данных часть данных подкачивается из кэша. Когда посетитель ходит по вашему сайту, то сайт запрашивают данные из базы данных, которая хранится на хостинге. Если быть точнее, то они запрашивают изображения, Javascript и CSS вашего сайта, чтобы он был в читабельных файлах HTML и доставлялся прямо в браузер. К сожалению, этот процесс требует определенных ресурсов и занимает время. Однако нет никакой нужды в том, что пользователям сайта было нужно каждый раз запускать этот процесс. Особенно, когда речь заходит о статичном контенте вашего сайта. Например, опубликованных постах, которые навряд ли кто-то будет уже редактировать.

Именно поэтому кэширование вашего сайта необходимо, если вы хотите:

  • быстро предоставлять доступ к данным сайта, которые редко меняются
  • ускорить весь процесс загрузки сайта
  • предоставить более качественный пользовательский опыт для всех посетителей своего сайта
  • продвигать в позициях выдачи поисковиков, благодаря более высоким показателям загрузки
  • приберегите серверные ресурсы и снизьте кол-во крахов

Как вы видите, есть уйма преимуществ в том, чтобы кэшировать ваш сайт на WordPress.

Основной функционал, который есть в каждом из упомянутых плагинов:

  • кэширование для мобильных пользователей
  • уменьшение размеров файлов и сжатие GZIP
  • настройка расписания очистки кэша
  • поддержка HTTPS/SSL

Лучшие плагины для кэширования WordPress

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

Сегодня я предлагаю вам обсудить такую интересную тему как кэширование в 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 Кбит/сек

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

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

Популярный плагин 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 Super Cache, вроде помогает:)

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

Доброго времени суток! Не секрет, что WordPress — это многофункциональная и удобная платформа, но довольно громоздкая. При увеличении трафика заметно возрастает нагрузка на сервер, производительность снижается и как следствие — медленная загрузка страниц.

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

В результате поиска в Google я пришел к верному решению — использовать кэширование страниц.

Алгоритм кэширования страниц сайта

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

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

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

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

Hyper Cache — инструкция по установке и настройке

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

Включение кэша на WordPress

Перед началом работы с плагином необходимо включить поддержку использования кэшированных страниц на WP. Делается это в основном файле конфигурации wp-config.php, который располагается в папке установки Вордпресс. Открывайте файл в текстовом редакторе, я рекомендую использовать Notepad++, чтобы не возникло проблем с кодировкой или же используйте встроенный редактор из панели управления хостингом.

Итак, вот эту строку требуется добавить в файл конфигурации:

Define("WP_CACHE" , true );

На странице разработчика указано, что вставлять ее следует после строки:

Define ("WPLANG" , "ru_RU" );

Установка плагина кэширования Hyper Cache

Для установки плагина необходимо его скачать с официального доверенного , загрузить по FTP в папку с плагинами и распаковать. Это очень нудный метод, на мой взгляд, я всегда устанавливаю плагины прямо из админки: Плагины — Добавить новый и затем в строку поиска вставить Hyper Cache, первый в списке — требуемый:

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

После установки и активации в консоли администрирования (меню Параметры) появится новый пункт: Hyper Cache — в нем имеются многочисленные настройки.

Настройка Hyper Cache, параметры кэша на WordPress

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

Состояние кэша

В этом пункте указано число страниц находящихся в кэше WP и указано время следующего сброса кэшированных страниц.

Настройки

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

Конфигурация для мобильных устройств

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

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

Сжатие

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

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

Экспертные настройки

  • Перевод — если хотите видеть страницу настройки Hyper Cache без перевода, то бишь на английском — отметьте галочкой.
  • Disable Last-Modified header — отключить в заголовке страницы время ее последнего изменения.
  • Кэширование Домашней — отметьте галочкой если НЕ хотите чтобы главная страница сохранялась в кэше.
  • Кэширование перенаправлений — если есть , то можно оставить опцию включенной.
  • Page not found caching (HTTP 404) — сохранять или нет страницы с ошибкой 404.
  • Strip query string — очистка УРЛ от дополнительных запросов в адресной строке. Это что-то похожее на .
  • URL с параметрами — отметьте если у Вас не используется ЧПУ и адреса страниц содержат знак вопроса.

Фильтры

  • Исключаемые URI — адреса страниц, которые не следует кэшировать.
  • Исключаемые агенты — юзер-агенты (поисковые боты, например) для которых кэш не выполняется и показываются всегда актуальные версии страниц.
  • Совпадение Cookies — если куки совпадут, то кэш перестанет выполняться.

Внимание! Чтобы изменения вступили в силу не забывайте под каждым блоком перечисленных настроек нажимать на кнопку Обновить.

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

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

Что такое кэш?

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

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

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

Кэширование в WordPress

В WordPress существует три основных типа кэширования:

  • Кэширование страниц — позволяет сохранять страницы целиком в кэш, и выдавать их из кэша при последующих запросах
  • Кэширование объектов — позволяет кэшировать данные произвольного типа
  • Транзитное кэширование — очень похоже на кэширование объектов, позволяет сохранять данные на определённый промежуток времени

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

Кэширование страниц в WordPress

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

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

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

В самом ядре WordPress кэширование страниц не реализовано, но есть все необходимые функции для реализации этого на уровне плагинов. Два самых популярных плагина для кэширования страниц — WP Super Cache и W3 Total Cache, хотя существуют и другие.

Плагин WP Super Cache

WP Super Cache — самый популярный плагин для кэширования страниц в WordPress. Он позволяет создавать и выдавать статические HTML файлы для ваших страниц, а при определённой конфигурации, вы можете настрить выдачу этих страниц напрямую вашим веб-сервером (Apache или nginx), минуя при этом обработку PHP файлов в целом.

Новые версии плагина WP Super Cache имеют некотоыре дополнительные функции, например настройку CDN, поддержку мобильной версии сайта и прочее, но основая суть данного плагина — кэширование страниц.

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

Плагин W3 Total Cache более молодой, чем WP Super Cache, но не уступает ему по функционалу. Он очень быстро набирает популярность, и на сегодняшний день насчитывает более 2 миллионов скачиваний из директории WordPress.org.

W3 Total Cache позволяет хранить закэшированные страницы как на жёстком диске, так и в памяти. Он не сохраняет структуру кэша, как делает это WP Super Cache, поэтому настроить выдачу без использования PHP невозможно, но в отличии от WP Super Cache использование внешнего хранилища позволяет легко работать в многосерверной архитектуре.

W3 Total Cache имеет огромное количество настроек и дополнительного функционала, включая поддержку CDN, кэширование запросов в базу данных, сжатие скриптов и стилей и многое другое. Мы рекомендуем W3 Total Cache для более опытных пользователей WordPress.

На момент написания данной статьи, плагин Batcache скачали всего около десяти тысяч раз из директории WordPress.org, но в данном случае это не является показателем его эффективности. По производительности он не уступает ни WP Super Cache, ни W3 Total Cache.

У плагина Batcache функция всего одна — кэширование страниц, но делает он это безупречно. Batcache использует внешнее кэширование объектов для хранения данных, что позволяет легко его исопльзовать в многосерверной архитектуре. Этот плагин используется в крупной сети WordPress.com, с более 40 млн сайтов, более 2000 серверов и более 10 млрд просмотренных страниц каждый месяц.

Какой из плагинов кэширования страниц выбрать вам зависит от размера вашего сайта, от возможностей вашего и от вашего опыта работы с WordPress. Если вы не используете плагинов кэширования страниц на данный момент, мы всегда советуем начать с WP Super Cache. Если вам важно иметь больше возможностией и более тонкую конфигурацию кэширования, попробуйте W3 Total Cache. Если вы неплохо разбираетесь в программировании и серверном администрировании, и готовы пожертвовать графическим интерфейсом при настройке — попробуйте Batcache.

Кэширование объектов в WordPress

Объектное кэширование (object cache) реализовано в самом ядре WordPress. Этот механизм позволяет хранить объекты произвольного типа в памяти и полезен в основном разработчикам тем и плагинов для WordPress.

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

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

Кэширование объектов в WordPress производится с помощью ряда внутренних функций, в том числе: wp_cache_add , wp_cache_set , wp_cache_get .

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

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

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

Тем не менее, постоянное кэширование объектов (или внешнее кэшированое) в WordPress легко реализуется с помощью сторонних плагинов, например Memcached Object Cache или APC Object Cache . Оба плагина позволяют использовать оперативную память сервера для хранения объектов WordPress, при этом объекты не пропадают при окончании запроса. Такой подход существенно снижает нагрузку на базу данных MySQL.

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

Транзитное кэширование в WordPress

Для пользователей данный метод кэширования совершенно прозрачен. Транзитное кэширование (transient cache) позволяет разработчикам сохранять данные на определённый промежуток времени. Этот метод реализован в WordPress с помощью функций get_transient , set_transient и delete_transient .

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

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

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

Кэширование объектов или транзитное кэширование?

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

При использовании плагина для постоянного кэширования объектов, все три метода будут пользоваться этим плагином.

Заключение

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

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

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

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

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

02.07.2013 05.11.2013

Сооснователь журнала WP Magazine и первой конференции WordCamp в России. Разработчик в компании Automattic , принимает активное участие в развитии ядра WordPress. Любимый язык программирования: Python.