← Speed / speed / optimization / content
Speed Brain
Speed Brain представляет собой инструмент для повышения производительности веб-страниц за счёт предзагрузки наиболее вероятного следующего перехода.
Доступность
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Доступность | Включено по умолчанию | Да | Да | Да |
Требования
Speed Brain работает при соблюдении следующих условий:
- Функция Speed Brain включена в Cloudflare.
- Посетитель страницы использует браузер на основе Chromium версии 121 или новее.
- Веб-страница, запрошенная через prefetch, подходит для кэширования.
- Страница, запрашиваемая при предзагрузке, не вызывает Worker.
Что такое Speed Brain?
Главная цель Speed Brain состоит в том, чтобы попытаться загрузить страницу в браузер до того, как пользователь на неё перейдёт.
Cloudflare использует Speculation Rules API ↗ , чтобы повысить производительность веб-страниц: браузеру предлагается заранее загружать вероятные последующие переходы. Speed Brain не ускоряет загрузку первой страницы сайта, которую посещает пользователь, но может ускорить загрузку последующих страниц в рамках того же сайта.
Предзагружая страницы, переход на которые браузер считает вероятным, Speed Brain может улучшать такие ключевые показатели, как Largest Content Paint ↗ (LCP), Время до первого байта ↗ (TTFB) и общее время загрузки страницы.
Как работает Speed Brain
Когда функция Speed Brain от Cloudflare включена, HTTP-заголовок с именем Speculation-Rules добавляется к ответам веб-страниц. Значение этого заголовка представляет собой URL, на котором размещена готовая конфигурация Speculation-Rules. Эта конфигурация указывает браузеру рассматривать предварительную загрузку будущих переходов с conservative eagerness ↗.
Конфигурация выглядит следующим образом:
{
"prefetch": [
{
"source": "document",
"where": {
"and": [{ "href_matches": "/*", "relative_to": "document" }]
},
"eagerness": "conservative"
}
]
}Эта настройка указывает браузеру инициировать запросы prefetch для последующих переходов. Такие запросы prefetch будут включать sec-purpose: prefetch HTTP-заголовок запроса. Неуспешные предзагрузки будут получать ответ с 503 код статуса. Успешные предзагрузки (prefetch) вернут 200 код состояния.
Проверка Speed Brain
Чтобы проверить, что Speed Brain включен, убедитесь, что HTTP-заголовки ответа для ваших веб-страниц содержат Speculation-Rules заголовок. Однако обратите внимание, что во время бета-фазы Speed Brain это поведение может быть не на 100% стабильным.
Чтобы проверить, отправляет ли ваш браузер запросы prefetch, откройте Сеть tab in Chrome DevTools. Then, mouse-down on a link on a webpage with Speed Brain enabled. This action should initiate a prefetch request, which will be visible in the Сеть вкладке. Однако обратите внимание, что есть несколько причин, по которым браузер может не инициировать предзагрузку (prefetch). См. Руководство Chrome Limits ↗ для получения дополнительных сведений. Общую информацию об отладке Speculation-Rules можно найти в Руководство Chrome Speculation Debugging ↗.
Интеграция RUM
Speed Brain интегрируется с Web Analytics и Real User Measurements (RUM). Благодаря этой интеграции вы можете увидеть, как Speed Brain влияет на производительность сайта, прямо в интерфейсе Web Analytics в панели управления Cloudflare.
Speed Brain можно использовать и без включённого RUM, но тогда вы не увидите, как эта функция влияет на производительность ваших страниц. Подробнее о настройке RUM читайте в Web Analytics & RUM документация.
Включение и отключение Speed Brain
Speed Brain доступен в Speed вкладке панели управления, а также в API.
Чтобы включить или отключить Speed Brain в дашборде:
-
На панели управления Cloudflare перейдите к разделу Speed > Настройки страницу.
Перейдите в Настройки ↗ -
Перейдите в Оптимизация контента.
-
Переключить Speed Brain к Включено или Off.
Используйте следующее PATCH запрос, чтобы включить Speed Brain:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Zone Settings Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/speed_brain" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"value": "on"
}'Чтобы отключить Speed Brain, установите value: к "off".
Speed Brain также можно настроить через Terraform. Подробнее об этом читайте в cloudflare_zone_settings_override ресурс в Документация Terraform ↗.
Важные замечания
-
Поскольку нет гарантии, что браузер отрендерит предзагруженные (prefetch) ответы, Speed Brain включает две защитные меры для снижения риска небезопасная предзагрузка ↗:
-
Speed Brain не выполняет предзагрузку на маршрутах, где работают Workers. Без этого ограничения запросы предзагрузки могли бы случайно запускать логику Worker, рассчитанную на обычный запрос, то есть не на предзагрузку. Например, это мог бы быть счётчик просмотров страницы, увеличивающийся в Worker. Такой счётчик не должен увеличиваться, если страница фактически не отображается в браузере.
-
Запросы Prefetch никогда не доходят до серверов-источников. Они отдают только контент, уже сохранённый в кэше Cloudflare. Если контента нет в кэше, запрос prefetch не пойдёт дальше, к серверу-источнику. Без этой защиты состояние сервера-источника могло бы меняться, даже если ответ prefetch не отображается в браузере. Например, это может быть запрос prefetch
GETзапрос к URL выхода из системы, что непреднамеренно инициирует выход из системы на сервере.
-
-
Если ответы исходного сервера содержат
Speculation-Rulesзаголовок, он не будет переопределён. -
Speed Brain не работает при строгих Content Security Policy ↗ конфигурации с помощью
strict-dynamicилиnonce-{hash}атрибуты. -
На данный момент Speed Brain несовместим с сайтами, которые используют или полагаются на
pages.dev.