React Academy · Урок

Стратегии периферийного кэширования для приложений React

Используйте заголовки Cache-Control, Cloudflare KV и R2 для кэширования отрендеренных страниц и статических ресурсов на периферии

Урок 4 из 413 шагов

«Стратегии периферийного кэширования для приложений React» — бесплатный урок React Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Заголовки Cache-Control для кэширования на границе

Заголовок ответа Cache-Control управляет тем, как долго Cloudflare и другие CDN хранят ваши ответы SSR в кэше. Основные директивы: max-age (кэш браузера), s-maxage (срок хранения в CDN и общем кэше) и stale-while-revalidate (выдача устаревшего содержимого во время фоновой проверки актуальности).

s-maxage и max-age

s-maxage учитывается общими кэшами (CDN), а max-age предназначен для кэшей браузеров. Для страниц SSR обычно задают s-maxage=60 (CDN хранит страницу в кэше 60 секунд) и max-age=0 (браузер всегда повторно проверяет актуальность), чтобы все пользователи получали достаточно свежий контент из кэша на границе.

Кэширование страниц SSR с помощью stale-while-revalidate

Добавление stale-while-revalidate=30 в заголовок Cache-Control сообщает Cloudflare, что нужно мгновенно выдать страницу из кэша, одновременно получая свежую версию в фоновом режиме. Пользователь всегда получает быстрый ответ; максимальный срок устаревания равен сумме s-maxage и stale-while-revalidate в секундах.

Персонализированные страницы: заголовок Vary

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

Обход кэша для аутентифицированных запросов

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

Cloudflare KV: пограничное хранилище «ключ — значение»

Cloudflare KV — это глобально распределённое хранилище «ключ — значение», в котором данные находятся рядом с пользователями. В KV можно кэшировать отрисованный HTML: сохранить отрисованную страницу как значение с TTL, а в следующих запросах читать её из KV на границе вместо повторной отрисовки с помощью React.

Производительность чтения и записи в KV

Чтение из KV выполняется быстро, потому что данные реплицируются на пограничный узел, обслуживающий запрос; типичная задержка чтения составляет менее 5 мс. Однако при записи в KV используется согласованность в конечном итоге: запись в одном регионе распространяется на все глобальные PoPs в течение 60 секунд, поэтому некоторые пользователи могут ненадолго увидеть устаревшие данные.

Cloudflare R2: объектное хранилище для крупных ресурсов

Cloudflare R2 — совместимый с S3 сервис объектного хранения без платы за исходящий трафик. Он подходит для крупных ресурсов, которые не помещаются в KV: модулей WASM, предварительно отрисованных изображений OG и больших наборов данных JSON. Workers получают доступ к R2 через привязки так же, как к KV.

Теги кэша для точечной инвалидации

Cloudflare Enterprise поддерживает теги кэша: вы добавляете к ответу тег Cache-Tag: product-42, а при изменении продукта 42 вызываете API Cloudflare, чтобы удалить все ответы с тегом product-42. Это позволяет выполнять точечную инвалидацию кэша без очистки всего кэша.

Обработка инвалидации кэша при развёртывании

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

Реализация кэша HTML на основе KV

Worker, кэширующий HTML SSR в KV, работает по следующей схеме: сформировать ключ кэша из адреса (и, при необходимости, локали), проверить наличие записи в KV и сразу вернуть кэшированный HTML, если запись найдена. При отсутствии записи выполнить отрисовку с React, сохранить результат в KV с TTL, а затем вернуть только что отрисованный HTML.

Модель согласованности Cloudflare KV

Какую модель согласованности Cloudflare KV использует для записей?

Итоги урока

Пограничное кэширование приложений React объединяет несколько стратегий: s-maxage в Cache-Control для кэширования общедоступных страниц в CDN, Vary: Cookie для защиты персонализированных ответов от совместного использования, KV для кэширования отрисованного HTML на границе и теги кэша для точечной инвалидации. Модель согласованности KV в конечном итоге означает, что распространение записи занимает до 60 секунд, поэтому проектируйте TTL и стратегию инвалидации с учётом этого.

Можно начать бесплатно

Изучай React с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
88
Уроки
324

Часто задаваемые вопросы

Урок «Стратегии периферийного кэширования для приложений React» бесплатный?

Да — полный текст урока «Стратегии периферийного кэширования для приложений React» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Стратегии периферийного кэширования для приложений React»?

Используйте заголовки Cache-Control, Cloudflare KV и R2 для кэширования отрендеренных страниц и статических ресурсов на периферии Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Стратегии периферийного кэширования для приложений React»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое периферийный рендеринг и почему он важен
  2. React на Cloudflare Workers с Hono
  3. Потоковая SSR с периферии
  4. Стратегии периферийного кэширования для приложений React
← Назад к React Academy