Vercel CDN теперь кеширует ответы внешних бэкендов через CDN-Cache-Control

Vercel расширил возможности своего CDN: теперь проксируемые ответы от внешних бэкендов можно кешировать с помощью заголовков CDN-Cache-Control и Vercel-CDN-Cache-Control. Раньше такая возможность была доступна только для Vercel Functions, но теперь она распространяется на любые запросы, которые прох

Vercel CDN теперь кеширует ответы внешних бэкендов через CDN-Cache-Control

Vercel расширил возможности своего CDN: теперь проксируемые ответы от внешних бэкендов можно кешировать с помощью заголовков CDN-Cache-Control и Vercel-CDN-Cache-Control. Раньше такая возможность была доступна только для Vercel Functions, но теперь она распространяется на любые запросы, которые проходят через CDN Vercel к сторонним серверам. Это нововведение основано на спецификации Targeted HTTP Cache Control (RFC 9213), которая позволяет задавать директивы кеширования, действующие исключительно для CDN, не влияя на браузеры. Поддерживаются стандартные директивы, такие как max-age и stale-while-revalidate, что даёт разработчикам гибкий контроль над временем жизни кеша и стратегиями обновления. Для использования достаточно вернуть соответствующий заголовок из вашего бэкенда. Если бэкенд нельзя модифицировать, можно настроить заголовки через файл vercel.json в секции headers. Никаких изменений в конфигурации проекта или повторного деплоя не требуется — всё работает сразу после добавления заголовка.

Предыстория и контекст

Vercel последовательно улучшает свою инфраструктуру кеширования, чтобы разработчики могли быстрее доставлять контент пользователям и снижать нагрузку на origin-серверы. Ранее возможность кеширования через CDN-Cache-Control была доступна только для ответов от Vercel Functions — серверных бессерверных функций, выполняемых на Edge. Проксируемые запросы к внешним бэкендам (например, к собственным API или сторонним сервисам) такого управления не имели. Эта асимметрия создавала неудобства: разработчикам приходилось либо мириться с неоптимальным кешированием, либо переносить логику на Vercel Functions. Теперь разрыв устранён, и любой бэкенд может использовать единый механизм кеширования через CDN.

Как это работает?

Механизм основан на стандарте RFC 9213, который определяет заголовок CDN-Cache-Control как расширение HTTP-кеширования. В отличие от обычного Cache-Control, который влияет и на браузер, и на промежуточные кеши, CDN-Cache-Control адресуется только CDN. Это позволяет, например, установить длительное кеширование на CDN (max-age=3600) и одновременно короткое в браузере (Cache-Control: max-age=60), обеспечивая быструю доставку и актуальность контента. Vercel также поддерживает собственный заголовок Vercel-CDN-Cache-Control, который даёт приоритет над CDN-Cache-Control в случае конфликта. Это удобно для платформенных настроек, которые не должны переопределяться бэкендом.

Технические подробности

Заголовок CDN-Cache-Control поддерживает все стандартные директивы: max-age (время жизни кеша в секундах), s-maxage (устаревшая, но всё ещё поддерживается), stale-while-revalidate (возврат устаревшего кеша во время фоновой проверки) и stale-if-error (возврат устаревшего кеша при ошибке бэкенда). Для настройки через vercel.json используется секция headers, где можно задать соответствие путей и заголовков. Например: { "headers": [ { "source": "/api/(.)", "headers": [ { "key": "CDN-Cache-Control", "value": "max-age=3600, stale-while-revalidate=300" } ] } ] } Это позволяет централизованно управлять кешированием для всех проксируемых маршрутов без изменения кода бэкенда.

Как настроить кеширование через CDN-Cache-Control на Vercel?

Настройка кеширования через CDN-Cache-Control на Vercel не требует сложных действий. Если ваш бэкенд может возвращать заголовки, просто добавьте в ответ HTTP-заголовок CDN-Cache-Control с нужными директивами. Например, установите max-age=3600 для кеширования на один час. Если бэкенд недоступен для изменений, используйте файл vercel.json в корне проекта. В секции headers укажите шаблон пути и соответствующий заголовок. Vercel автоматически применит эти настройки ко всем запросам, проходящим через его CDN. Обратите внимание, что заголовок Vercel-CDN-Cache-Control имеет приоритет над CDN-Cache-Control, поэтому его можно использовать для переопределения настроек бэкенда на уровне платформы.

Кого затронет и как

Нововведение полезно всем, кто использует Vercel для проксирования запросов к внешним API или собственным бэкендам. Разработчики получат возможность уменьшить нагрузку на origin-серверы за счёт кеширования часто запрашиваемых данных, ускорить доставку контента конечным пользователям, особенно в регионах, удалённых от бэкенда, и тонко настраивать стратегии кеширования для разных типов ответов (например, кешировать список товаров на час, а корзину — не кешировать). Для бизнеса это означает снижение затрат на инфраструктуру и улучшение пользовательского опыта. Особенно актуально для проектов с высоким трафиком или глобальной аудиторией.

Что будет дальше

Vercel продолжает развивать CDN-возможности. Вероятно, в будущем появятся более продвинутые механизмы инвалидации кеша, интеграция с Edge Config и поддержка условного кеширования на основе заголовков запроса. Пока же обновление доступно всем пользователям Vercel на всех тарифах, включая бесплатный, без дополнительной платы.

Итог

Поддержка CDN-Cache-Control для проксируемых ответов — важный шаг в унификации кеширования на платформе Vercel. Разработчики теперь могут управлять кешированием внешних бэкендов так же гибко, как и для Vercel Functions. Это улучшает производительность, снижает нагрузку и не требует дополнительных затрат.