Снижаем нагрузку на сайт с помощью Cloudflare

О Cloudflare я узнал когда зашел на один сайт и увидел вместо ожидаемой страницы я увидел вот такую вот картину:

Ошибка ответа сервера

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

Но простое добавление ситуацию никак не спасло, нагрузка на хостинг никак не изменилась. Я решил изучить функционал Cloudflare чуть по подробнее. Оказалось с помощью Page rules можно управлять кешированием, а именно, задавать время хранения страниц и файлов на серверах Cloudflare. Иными словами мы можем указать Cloudflare что и сколько времени хранить. При желании конечно можно посмотреть что именно создает нагрузку и кешировать именно то, но я решил не заморачиваться и создал вот такое правило на вкладке «Page rules»:

Добавление правил в Cloudflare

Тем самым я указал что нужно кешировать весь сайт и добавил три параметра:

  • Browser Cache TTL — указывает браузеру сколько времени хранить полученные файлы. Я ставлю один день, поскольку браузер хранит даже страницы.
  • Cache Level — тут мы указываем что Cloudflare должен кешировать. Я выбрал кешировать все.
  • Edge Cache TTL — тут указываем сколько времени живет кеш на сервере Cloudflare.

После этих настроек на следующий день я увидел долгожданное падение нагрузки:

Сообщение о превышении нагрузки

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

Тогда я понял что для админки необходимо кеш отключать. Для этого необходимо добавить в разделе Page Rules одно правило. Все по сути выглядит вот так:

Добавление правила в раздел Page Rules

Таким образом мы отключим кеширование для админки. Естественно это работает только в сайтом на вордпресс. Для других сайтов необходимо корректировать параметр в первом поле. Указываем необходимые параметры и жмем кнопку «Save and Deploy». Все готово. Мы настроили исключение для админки нашего сайта.

Управление кешем

Для тех, у кого сайт работает на популярных CMS, таких как WordPress, есть плагин для управления кешем сайта. Допустим вы внесли какие-то поправки во внешний вид сайта или отдельной страницы. Чтобы эти изменения появились на сайте, нужно сбросить кеш. Чтобы его сбросить, необходимо либо лезть на сайт Cloudflare, либо установить плагин.

Если у вас сайт работает на WordPress, то достаточно перейти в раздел «Плагины» и нажать кнопку «Добавить новый». В строке поиска просто ввести «cloudflare»/

Добавление плагина Cloudflare на сайт WordPress

Нас интересует самый первый плагин. Как видите он разработан командой Cloudflare. Устанавливаем его. После активации нам необходимо его настроить. Проходим в настройки плагина. Делается это просто, слева в разделе «Настройки» и там ищем «Cloudflare». Попав в раздел настроек плагина, указываем наш емейл, который является логином в Cloudflare и API key. Если с емейлом проблем нет, мы его вроде как знаем, а вот с API Key придется покопаться в Cloudflare. Для этого кликаем сайт в личном кабинете Cloudflare, затем внизу справа ищем ссылку «Get your API key».

Сссылка Get your API key в разделе информации о сайте

Тут мы попадаем в раздел из которого нам надо перейти в другой раздел, который называется API Tokens.

Раздел настроек аккаунта

В этом разделе напротив «Global API key» кликаем кнопку «View».

Раздел API Tokens в Cloudflare

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

Получение API token

После того, как мы ввели все необходимое и нажали кнопку «View», мы получим наш API Token. Нам останется скопировать его и вставить в поле в настройках плагина, а затем сохранить. Вот и все, теперь вы можете управлять некоторыми настройками сайта.

Допустим вы добавили на сайт новую статью. Заходим на страницу плагина Cloudflare, затем ищем «Purge Cache» и жмем кнопку с таким же названием, там выбираем «Purge Everything».

Сброс кеша в админке сайта с помощзью плагина

 

Советую всегда выбирать всегда «Purge Everything» за исключением случаев, когда изменения вносятся в содержимом отдельной страницы. Например если вы добавили новую статью, то нужно сбрасывать весь кеш. Поскольку кешируется практически все, в том числе и Sitemap, в котором долгое время не будет нашей новой статьи пока не обновится кеш. Тоже самое с блоками а-ля «Последние записи», «Похожие записи» в конце статей и т.д.

Один совет

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

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

На сайте отсутствует реклама

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

Номер карты

Заранее спасибо!

Бидюков Денис

Эксперт по сайтам

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

10 комментариев к “Снижаем нагрузку на сайт с помощью Cloudflare”

  1. Наталья

    Здравствуйте, Денис! Спасибо за полезную информацию. Но у меня вопрос: почему вы отказались от использования Cloudflare? С какими минусами вы столкнулись?

    1. Бидюков Денис

      Здравствуйте, Наталья! Причиной отказа было наличие IP в реестре РКН. Мой сайт был недоступен для некоторых людей. Я боялся что это повлияет на поведенческие факторы. Неприятным минусом является отсутствие возможности контролировать кеширование средствами вордпресс. В частности неудобство заключалось в том, что в кеш попадала страница с админбаром, если я первый попаду на страницу будучи авторизованным. Если админку можно исключить, то в остальном проблемы.Для одного клиентского проекта я оставил Cloudflare, но без кеширования. Есть там фишки с фаерволом. С их помощью я включил проверку при попытке авторизации, чтобы исключить атаки по подбору пароля, а так же блокируются все, кто запрашивает те или иные файлы, которые не должен запрашивать обычный пользователь. У меня хостер недавно сделал установку и автоматическое продление сертификатов от Lets Encrypt, по этой причине отпала необходимость в SSL от cloudflare. Кеширование легко реализуется плагинами. Атак я не боюсь ибо админка просто закрыта от посторонних. В общем Cloudflare можно использовать когда это реально оправдано.

      1. Сергей

        А если необходимо определенную страницу закэшировать, как прописать?

        1. Бидюков Денис

          Прописать адрес этой страницы, это же очевидно. Если надо кешировать только главную, то указываем адрес главной страницы https://сайт.ru/ и так далее по аналогии.

  2. Владимир

    Добрый день! Подключил сайт на движке DLE и установил правила Page Rules по вашему примеру. Все отлично, но перестали работать рейтинги на сайте (работающие через через AJAX или Java скрипты.. не силен в программировании) в общем выдает сообщение, что ваша пользовательская сессия закончилась и рейтинг статьи не меняется, полагаю также и с комментариями будет, как надстроить правила, чтоб именно скрипты и AJAX и тп работало, а все остальное загнать максимально в кеш? Благодарю за ответ!

    1. Бидюков Денис

      Здравствуйте! Извиняюсь что долго не отвечал. В разделе Cache можно настроить правила для этого типа запросов

      1. Бидюков Денис

        В разделе Caching выбираете Cache Rules. Там жмете Create Rule. Тут в списке Field выбираете параметр, по которому нужно фильтровать запросы. В Вашем случае наверное это URI Full или URI Query String, там выбираете нужный оператор и в строке указываете значение, которое указывает что запросы с таким значением нельзя кешировать. Ниже отмечаете Bypass cache. Готово. Направление я дал, копайте.

Оставьте комментарий

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