INTEGRITY Документация

Устранение неполадок медленного сайта

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

Прежде чем начать: убедитесь, что трафик проходит через Cloudflare

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

Проверьте наличие заголовка cf-ray

Каждый ответ, передаваемый через Cloudflare, содержит cf-ray заголовок. Проверьте наличие этого заголовка:

curl -s -D- -o /dev/null https://www.example.com | grep -i cf-ray
(Invoke-WebRequest -Uri "https://www.example.com" -Method Head).Headers["cf-ray"]

Если вы видите cf-ray заголовок (например, cf-ray: 8a1b2c3d4e5f6g7h-SJC), ваш трафик проходит через Cloudflare. Если нет, проверьте настройки DNS.

Убедитесь, что DNS указывает на Cloudflare

Чтобы трафик проксировался, домен должен резолвиться в IP-адреса Cloudflare:

dig +short www.example.com
Resolve-DnsName -Name www.example.com | Select-Object -ExpandProperty IPAddress

Возвращаемые IP-адреса должны быть IP-адреса Cloudflare ↗. Если они указывают напрямую на ваш исходный сервер, ваши записи DNS не проксируются.

Чтобы это исправить:

  1. Перейдите в Панель управления Cloudflare ↗.
  2. Найдите DNS-запись для медленного хоста.
  3. Убедитесь, что Статус прокси имеет значение Proxied (значок оранжевого облака).

Сбор сведений о медленных запросах

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

  1. Выявление конкретных медленных запросов - Определите, какие URL-адреса, ресурсы или конечные точки API работают медленно.
  2. Измерьте степень замедления - Укажите величину задержки (например, «это изображение загружается 5 секунд»).
  3. Воспроизведите проблему - Убедитесь, что снижение скорости повторяется, а не является единичным случаем.

Шаг 1. Используйте Observatory для анализа производительности

Observatory предоставляет синтетические тесты и данные мониторинга реальных пользователей (RUM) для оценки производительности вашего сайта.

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

Запустить тест скорости

  1. Перейдите в панель управления Cloudflare.

    Перейдите в Observatory ↗
  2. Выберите Observatory.

  3. Введите URL-адрес, который нужно проверить, и выберите Запустить тест.

Понимание результатов

Observatory показывает ключевые метрики:

Метрика Что измеряется Цель
Largest Contentful Paint (LCP) Время до загрузки самого крупного видимого элемента Менее 2.5 секунды
First Contentful Paint (FCP) Время до появления первого содержимого Менее 1.8 секунды
Cumulative Layout Shift (CLS) Визуальная стабильность при загрузке страницы Менее 0.1
Время до первого байта (TTFB) Время до получения первого байта ответа Менее 800 мс
Общее время блокировки (TBT) Время блокировки основного потока Менее 200 мс

Real User Monitoring показывает похожие метрики, но вместо Total Blocking Time (TBT) вы увидите Interaction to Next Paint (INP).

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

На основе результатов Observatory включите соответствующие Оптимизация скорости:


Шаг 2. Определите медленные ресурсы

Если данные Observatory и RUM указывают на конкретные проблемы, используйте инструменты разработчика браузера для анализа отдельных ресурсов.

Используйте инструменты разработчика в браузере

  1. Откройте инструменты разработчика в браузере.
  2. Перейдите в Сеть на вкладке.
  3. Перезагрузите страницу и посмотрите, какие запросы выполняются дольше всего.
  4. Сортировать по Время или Длительность , чтобы определить самые медленные ресурсы.
  5. Отметьте точные URL-адреса медленных ресурсов.

Обратите внимание на:


Шаг 3. Проанализируйте производительность источника

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

Проверьте время отклика источника

В панели управления Cloudflare:

  1. Перейдите в Speed > Origin Analytics.

    Перейдите в Origin Analytics ↗
  2. Просмотрите Время ответа источника метрик.

  3. Ищите закономерности в медленных ответах (конкретные пути, время суток или географические регионы).

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

Полное руководство по доступным метрикам, процессам диагностики и интерпретации кодов состояния источника см. в Origin Analytics.

Проверьте наличие медленных Workers

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

Чтобы проверить, влияют ли Workers на производительность:

  1. Перейдите в Workers & Pages в Cloudflare dashboard.
  2. Проверьте, какие Workers развёрнуты в вашей зоне.
  3. Проверьте Аналитика для каждого Worker, чтобы увидеть время выполнения.
  4. Временно отключите Workers, чтобы проверить, не они ли вызывают замедление.

Если Worker работает медленно, проверьте его код на наличие:


Шаг 4. Измерьте производительность из командной строки

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

Базовый тест производительности

curl -w "\n\nDNS Lookup: %{time_namelookup}s\nTCP Connect: %{time_connect}s\nTLS Handshake: %{time_appconnect}s\nTime to First Byte: %{time_starttransfer}s\nTotal Time: %{time_total}s\n" -o /dev/null -s https://www.example.com/slow-asset.jpg
$url = "https://www.example.com/slow-asset.jpg"
try {
    $timing = Measure-Command { 
        $response = Invoke-WebRequest -Uri $url -ErrorAction Stop
    }
    Write-Host "Total Time: $($timing.TotalSeconds)s"
    Write-Host "Status: $($response.StatusCode)"
} catch {
    if ($_.Exception.Response) {
        $statusCode = $_.Exception.Response.StatusCode.value__
        Write-Host "Error Status: $statusCode"
    }
    Write-Host "Error: $($_.Exception.Message)"
}

Пример вывода (bash):

DNS Lookup: 0.025s
TCP Connect: 0.045s
TLS Handshake: 0.120s
Time to First Byte: 0.350s
Total Time: 1.250s

Понимание метрик

Разбивка времени curl показывает следующее:

Метрика Описание Высокое значение указывает на
DNS-запрос Время разрешения доменного имени Проблемы с DNS или медленный DNS-резолвер
TCP Connect Время установки TCP-соединения Задержка сети или удалённость сервера
TLS Handshake Время завершения согласования SSL/TLS Проблемы с цепочкой сертификатов или медленный сервер
Время до первого байта (TTFB) Время до первого байта ответа Медленная обработка на источнике
Общее время Полная длительность запроса Большой размер файла или медленная передача

Протестируйте из разных мест

Чтобы протестировать из разных географических точек, используйте такие онлайн-инструменты, как:


Шаг 5. Изучите кеширование

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

Некэшированный контент должен пройти путь от посетителя до Cloudflare, затем до вашего origin-сервера и обратно. Используйте Cache Analytics , чтобы оценить эффективность кэша и найти возможности для кэширования большего объема контента.

Проверьте, кэшируются ли ресурсы

Проверьте статус кэша конкретного ресурса:

curl -s -D- -o /dev/null https://www.example.com/asset.jpg | grep -i "cf-cache-status"
(Invoke-WebRequest -Uri "https://www.example.com/asset.jpg" -Method Head).Headers["cf-cache-status"]

Возможные значения:

Статус Значение Действие
HIT Обслужено из кеша Cloudflare Действий не требуется
MISS Отсутствует в кэше, получено с исходного сервера Может потребоваться настройка правил кэширования
DYNAMIC Не подлежит кэшированию Создайте правило кеширования для статического контента
BYPASS Кэш преднамеренно обойдён Проверьте правила кеширования
EXPIRED Кэшированная копия устарела Увеличьте Edge TTL
REVALIDATED Cloudflare подтвердил, что контент актуален Увеличьте Edge TTL

Полный список см. в Кеширование ответов Cloudflare.

Используйте Cache Analytics

  1. Перейдите в панель управления Cloudflare.

    Перейдите в Обзор ↗
  2. Просмотрите Производительность кеша раздел.

  3. Фильтр по Статус кэша равен MISS или DYNAMIC , чтобы выявить некэшируемый контент.

Выясните, почему статический контент не кэшируется

Если статические ресурсы (изображения, CSS, JavaScript) имеют статус кэша DYNAMIC, BYPASS, или MISS, выясните причину:

Симптом Вероятная причина Решение
DYNAMIC статус Тип контента отсутствует в списке расширения файлов по умолчанию Создайте Cache Rule для кеширования контента
DYNAMIC статус Источник отправляет Cache-Control: private или no-store Создайте Cache Rule, чтобы переопределять cache control источника
BYPASS статус Cache Rule обходит кеш Проверьте свои Cache Rules конфигурация
MISS при каждом запросе Ответ включает Set-Cookie заголовок Настройте источник так, чтобы он не устанавливал куки для статических ресурсов, либо используйте Cache Rule, чтобы игнорировать куки
MISS со строками запроса Разные строки запроса создают разные записи в кеше Используйте пользовательский ключ кеша , чтобы игнорировать или нормализовать строки запроса

Кэширование дополнительного статического контента

По умолчанию Cloudflare кэширует только определённые расширения файлов. Чтобы кэшировать дополнительный статический контент:

  1. Перейдите в Кеширование > Cache Rules.
  2. Создайте правило, чтобы кешировать определённый контент.
  3. Установите подходящие Edge TTL.

Используйте Cloudflare Trace для отладки правил кеширования

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

Это особенно полезно в следующих случаях:


Шаг 6. Диагностируйте проблемы сети

Если curl показывает высокое время TCP Connect или TLS Handshake, проблема может быть связана с сетью, а не с приложением.

Проверьте подключение к интернету

Перейдите на speed.cloudflare.com ↗ для проверки:

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

Запустите MTR от вашего местоположения до Cloudflare

MTR объединяет traceroute и ping, показывая задержку и потери пакетов на каждом сетевом узле.

mtr -rw www.example.com

Скачать WinMTR ↗ и запустите его, указав в качестве цели свой домен.

Обратите внимание на:

Подробнее см. в Как читать MTR ↗.

Запустите MTR от вашего источника до Cloudflare

Если у вас есть доступ к исходному серверу, запустите MTR от источника до IP-адрес Cloudflare ↗ , чтобы проверить сетевой путь между вашим источником и Cloudflare.

mtr -rw 104.16.132.229

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


Шаг 7. Разберитесь в маршрутизации сети

То, как запросы маршрутизируются к дата-центрам Cloudflare, может существенно влиять на производительность.

Определение дата-центра, обрабатывающего ваши запросы

Добавить /cdn-cgi/trace для вашего домена, чтобы узнать, какой дата-центр Cloudflare обрабатывает ваши запросы:

curl https://www.example.com/cdn-cgi/trace
Invoke-RestMethod -Uri "https://www.example.com/cdn-cgi/trace"

colo поле показывает трехбуквенный код аэропорта обслуживающего дата-центра (например, colo=SJC для Сан-Хосе). Полный список дата-центров Cloudflare и их кодов можно найти на страница статуса Cloudflare ↗.

Почему маршрутизация имеет значение

Когда запрос доходит до Cloudflare:

  1. Запрос направляется в ближайший дата-центр Cloudflare на основе anycast маршрутизация ↗.
  2. Если содержимое кэшировано, оно выдаётся немедленно.
  3. Если содержимое не кэшировано, Cloudflare запрашивает его с исходного сервера.

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

Устранение проблем с неожиданной маршрутизацией

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

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

Подробнее см. в Трафик Cloudflare не направляется в географически ближайший дата-центр.

Распространённые причины непредвиденной маршрутизации:

Симптом Пояснение
Запросы маршрутизируются в удалённый дата-центр Управление трафиком Cloudflare для повышения надёжности или решения по маршрутизации со стороны интернет-провайдера
Изменения маршрутизации между запросами Обычное поведение: маршрутизация подстраивается под состояние сети или балансировку нагрузки у провайдера
Постоянная маршрутизация в удалённый регион Точка пиринга ISP или управление ёмкостью Cloudflare
Высокая задержка при близко расположенном дата-центре Перегрузка сети на маршруте

Решения для удалённости источника

Рассмотрите следующие решения с учётом ваших потребностей:

Решение Описание Подходит для
Повышение коэффициента попаданий в кэш Кэшируйте больше контента, чтобы сократить обращения к источнику Все сайты
Tiered Cache Используйте дата-центры верхнего уровня, чтобы сократить количество запросов к источнику Сайты с глобальным трафиком
Argo Smart Routing Направляйте трафик по более быстрым сетевым маршрутам Сайты с медленным подключением к источнику
Приблизьте исходный сервер Разверните исходные серверы в нескольких регионах Крупномасштабные приложения

Включение Argo Smart Routing

Argo Smart Routing анализирует состояние сети в реальном времени и направляет трафик по самым быстрым маршрутам, снижая задержку в среднем на 30%.

Argo Smart Routing является частью Smart Shield, который объединяет несколько функций Cloudflare для производительности и надежности.

Чтобы включить Argo Smart Routing:

  1. Перейдите в Панель управления Cloudflare ↗.
  2. Следуйте Руководство по настройке Smart Shield , чтобы включить эту функцию.

Argo особенно эффективен в следующих случаях:

Подробные сведения о принципе работы Argo Smart Routing см. в документация Argo Smart Routing.


Если проблема не устраняется, обратитесь в службу поддержки

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

При обращении в службу поддержки предоставьте как можно больше данных, чтобы упростить диагностику проблемы:

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