Loading...
X

Включил дополнительное кэширование на виртуальном хостинге — теперь он может держать в 1.5 раза больше трафика!


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

Поэтому я оттягиваю переезд с виртуальных хостингов как могу. Но вопросы нагрузки на сервер тоже надо решать.

У моего хостера уже включено кэширование текстовых файлов и изображений:

Это играет свою положительную роль, но когда посещаемость на один аккаунт суммарно приближается к 10 тысячам человек в сутки, этого уже явно мало.

Один из способов — включить Memcached. Чтобы WordPress мог его использовать, нужно использовать плагин WordPress WP-FFPC. Причём нужно правильно настроить, поскольку в противном случае можно получить результат в диапазоне «никакого эффекта — перестало нормально работать».

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

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

Повторюсь, при этом очень важно всё настроить правильно в плагине WP-FFPC, чтобы был эффект и не получить проблемы. Далее рассказано, как подключить и Memcached и детально настроить WP-FFPC. Ещё я расскажу о нюансах и неочевидных проблемах, которые вызывает кэширование.

Как включить Memcached на виртуальном хостинге

Пример виртуального хостинга с Memcached: Хостлэнд (на нём размещён сайт Suay.ru).

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

Для подключения доступно несколько тарифных планов:

  • 128Mb - 30 руб/мес
  • 256Mb - 60 руб/мес
  • 512Mb - 90 руб/мес
  • 1024Mb - 120 руб/мес

То есть в самом максимальном варианте на гигабайт оперативной памяти нужно будет доплатить всего 120 рублей в месяц.

Чтобы убедиться, что Ваш персональный memcached подключен, необходимо зайти в панель управления и перейти в раздел «Дополнительные услуги» (по умолчанию memcached отключен).

Настройка WP-FFPC в WordPress

Для настройки Memcached на WordPress зайдите в административную панель установленной версии WordPress (по умолчанию: //site.ru/wp-admin),

выберите пункт меню «Плагины → Добавить новый»

Проведите поиск по слову WP-FFPC, при появлении нужного нам плагина, нажмите Установить,

а затем Активировать

Для правильной работы приложения, Вам нужно перейти в Панель управления Хостлэнд (раздел «Файловый менеджер») и в корневой директории (по умолчанию /htdocs/www) найти файл wp-config.php. Откройте его в любом встроенном редакторе и добавьте строку в начало файла:

define ( 'WP_CACHE', true );

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

Для настройки, нажмите на слово «Settings».

В подразделе Cache type должен быть выбран PHP Memcached для пункта «Sеlect backend»

После этого сохраните настройки внизу страницы (Save Changes). Должно появиться сообщение о том, что плагин запущен и работает:

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

Рекомендуется увеличить значения для следующих пунктов:

  • Expiration time for posts — время хранения кэша постов
  • Expiration time for taxonomy — время хранения таксономии (рубрики, архивы, тэги и т.п.)
  • Expiration time for home — время хранения домашней страницы.

По умолчанию установлено 300 секунд (5 минут). Это значение можно увеличить во много раз. Если у вас страницы не меняются часто, то это значение можно установить хоть на сутки (86400 секунд), хоть на 10 суток (864000) секунд.


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

Cache invalidation method (метод аннулирования кэша)

  • flush cache — очищает все в хранилище, включая значения, установленные другими приложениями
  • only modified post — очистить только запись изменённых сообщений, все остальное остаётся в кеше
  • modified post and all related taxonomies — аннулирует пост и таксономию, связанную с постом

Рекомендуется выбрать only modified post или modified post and all related taxonomies.

Invalidate on comment actions (очистка кэша при действиях с комментариями). Активация аннулирования кэша при публикации, редактировании и удалении комментариев. Рекомендуется включить.

Внизу вы данной странице вы найдёте три небольших вкладки:

  • Precache — создание предварительного кэша, будет запущен процесс, который обойдёт все страницы, чтобы их копии стали хешированными. Можно это включить в период низкой активности пользователей, если для вас важна быстрота загрузки и/или если вы готовитесь к большому притоку посетителей. Я эту функцию не пробовал, не могу сказать, как это скажется на нагрузку сервера
  • Empty cache — очистить кэш. Например, вы внесли важное изменение и хотите, чтобы оно немедленно стало видно на странице
  • Reset settings — сбросить настройки

Переходим к вкладке «Cache exceptions» (через одну), в ней можно настроить различные исключения для кеширования, такие как:

Enable cache for logged in users (Cache pages even if user is logged in) — Включить кэш для зарегистрированных пользователей (кешировать страницы, даже если пользователь вошёл в систему) — рекомендуется отключить, поскольку администратор должен видеть все внесённые изменения, иначе это может сильно запутать.

Снимите галочку с Dynamic requests, поскольку при её включении будут исключены все URL содержащие "?".

В поле «Don't cache following URL paths» можно записать адреса или их часть, которые должны быть исключены из хеширования. Кеширование для страниц, начинающихся с /wp-, по умолчанию выключено. Обратите внимание, что нельзя просто удалить строку «^/wp-» поскольку данная текстовая область не может быть пустой, нужно вписать любой несуществующий адрес, если вы хотите кэшировать все страницы сайта.

Обязательно исключите из кэширования:

^/wp-admin

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

Обратите внимание, что хотя нам предоставлено текстовая область, вводить нужно ОДНО регулярное выражение. Если нужно указать несколько путей, то разделите их символом | (в регулярных выражениях означает ИЛИ).

Ещё обратите внимание на «Exclude from cache based on content» - исключить из кэширования основываясь на содержимом. С помощью этой настройки можно решить проблемы, например, с плагинами, маскирующими ссылки. Дело в том, что страницы с перенаправлением по внешним ссылкам кэшируются, а их заголовки — НЕТ! То есть если происходит редирект, такая страница вместо перенаправления пользователя будет показывать страницу с кодом 200 вместо страницы с кодом 3xx. К примеру, при использовании плагина «Mihdan: No External Links» нужно добавить в это поле строку «Перенаправляю…» (без кавычек).

Проблемы, которые могут быть вызваны кэшированием страниц сайта

  1. Перестанут нормально работать плагины, собирающие статистику посещений — многим пользователям будет отдана кэшированная страница, об этом плагин статистики никогда не узнает. На внешние метрики (например, Яндекс.Метрика) это не оказывает влияние, они будут работать как раньше, а внутренние плагины сборы статистики можно отключить при включении кэширования.
  2. Я столкнулся с проблемой, когда я мог видеть добавленную статью, а все остальные пользователи при переходе по этой же ссылке получали ошибку 404 (не найдено). Всё дело оказалось в том, что ещё до публикации статьи я открывал её для предосмотра. Открытые в браузере страницы пытаются просканировать поисковые системы и роботы партнёрских сетей контекстной рекламы (Mediapartners-Google, AdsBot-Google, YandexDirect и аналогичные). То есть в момент, когда статья ещё не была опубликована, её просканировал бот и получил ошибку 404. Страница в таком виде сохранилась в кэше. В результате, после публикации статьи я видел нормальную страницу, а пользователи видели кэшированную страницу с кодом 404. Для исправления подобной проблемы нужно очистить кэш (полностью или только для этой статьи, добавив и удалив комментарий).
  3. Страница редактора статьи должна быть исключена из кэширования, иначе после сохранения вы вновь увидите пустую область.
  4. Коды страниц (например 3xx — редирект) НЕ кэшируются. Вам нужно исключить их, либо при их работе возникнут проблемы.
  5. Обратите внимание, что расширение Memcached может быть доступно не для всех версий PHP. Например, у меня в аккаунте это расширение доступно на PHP версии 7.2, то есть для сайта нужно выбрать эту версию PHP, чтобы использовать Memcached и WP-FFPC. Версию PHP можно выбрать в настройках каждого домена по отдельности.
  6. Судя по всему, поломался триггер сброса кэша для одной страницы при действиях с комментариями. То есть теперь при добавлении, удалении или изменении комментария не сбрасывается кэш одной страницы даже если это включено в настройках. Выход: только сбрасывать кэш целиком.

Ссылка на заказ хостинга, как и положено, присутствует тестовый период и бонусы при регистрации с промокодом b33e0e2f.

Рекомендуется вам:


Leave Your Observation

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

wp-puzzle.com logo

Scroll Up