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

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

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

Терминология

Кэш (cache) — промежуточный буфер в котором хранятся загруженные/сгенерированные данные.

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

Кэширование бывает нескольких видов:

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

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

Зачем использовать кэширование?

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

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

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

WP Super Cache

Ссылка на плагин Wp Super Cache

Примечание: Когда-то я пробовал несколько плагинов кэширования, но результаты мне не понравились, пришлось перестанавливать WordPress)

В этот раз я решил поставить WP Super Cache, и я сделал правильный выбор! Плагин достаточно простой и справляется со своей функцией кэширования — создает статические копии каждой страницы и показывает их гостям (незарегистрированные пользователи, которые не оставляли комментарии, боты).

Установка простая, как у обычного плагина. Плагин на русском языке. Настройка тоже не сложная.

Главная страница настроек плагина WP Super Cache
Главная страница настроек плагина WP Super Cache

Вот такие настройки стоят этом сайте (10.01.2018):

Раздел расширенных настроек плагина WP Super Cache
Раздел расширенных настроек плагина WP Super Cache
Расширенные настройки в разделе расширенных настроек плагина WP Super Cache
Расширенные настройки в разделе расширенных настроек плагина WP Super Cache

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

Вместо динамического кэширования лучше использовать Ajax, это просто (я это делал впервые, Евгений помог), и все-таки современно)) Пример работы Ajax можно увидеть на другом моем блоге.

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

Допустимые имена & Запрещенные адреса WP Super Cache
Допустимые имена & Запрещенные адреса WP Super Cache

Не обошлось без проблем. Проверка кэширования не работала, не знаю почему, однако само кэширование и обновление работало, я не стал выяснять) Но была еще одна проблема …

Проблема общего кэширования и ее решение

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

Ссылка на SiteMapScan

Суть в том, что мы при помощи скрипта обходим все доступные страницы из sitemap.xml (с поддержкой редиректов для sitemap.xml) и загружаем их при помощи cUrl, во время загрузки WP Super Cache делает копию страницы и ложит ее в кэш. То есть мы просто помогаем плагину сделать общий кэш))

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

Установка чрезмерно проста:

  • скачать отсюда архив
  • взять из него simple_html_dom.php и sitemap_scan.php (в следующей версии планирую убрать simple_html_dom, дабы снизить вычисления)
  • настроить Cron на вызов sitemap_scan.php

Лицензия свободная, берите пользуйтесь, главное чтобы было полезно))


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

Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*