Триггеры деплоя

Прогревайте автоматически после каждого релиза — из Vercel, Netlify, Shopify или любого CI-конвейера.

9 min read

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

Триггеры развертывания делают потепление частью процесса доставки. Когда ваше развертывание успешно, ваша платформа вызывает Cache Rocket, и начинается разогрев, при этом никто не открывает панель управления.

URL-адреса веб-перехватчиков и примеры находятся в разделе Аккаунт → Развертывание интеграции.

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

Вы предоставляете своей хостинговой платформе или CI URL-адрес, по которому можно позвонить после успешного развертывания. Запрос содержит ваши ключи API в виде заголовков, а также небольшое тело JSON, указывающее, что нужно согреть.

Общая форма
bash
curl -X POST https://api.cacherocket.com/web/v1/public/webhooks/vercel \
  -H "Content-Type: application/json" \
  -H "X-Public-Key: YOUR_PUBLIC_KEY" \
  -H "X-Secret-Key: YOUR_SECRET_KEY" \
  -d '{"hostname":"www.example.com"}'
ПлатформаПуть вебхука
Версель/web/v1/public/webhooks/vercel
Используйте веб-перехватчик уведомлений для события развертывание успешно, указывая на путь Netlify с теми же заголовками ключей API./web/v1/public/webhooks/netlify
Наведите веб-хуки публикации темы или приложения на путь Shopify, чтобы изменения на витрине обновлялись сразу после их публикации./web/v1/public/webhooks/shopify

Note

Точный базовый URL-адрес вашей учетной записи показан на странице «Развертывание интеграций» вместе с готовым к копированию примером Curl для каждой платформы.

Выбор полезной нагрузки

Тело JSON решает, что будет нагреваться. Три варианта, от самого широкого до самого хирургического:

ТелоЭффектИспользуйте, когда
{"hostname":"www.example.com"}Начинается каждый warmer, соответствующий этому hostnameНормальный полноценный релиз. Обычный выбор.
{"crawlerId":"…"}Начинается одна конкретная warmerУ вас есть несколько warmers на каждый сайт, и только один имеет отношение к этому развертыванию.
{"urls":["https://…"]}Приоритетно прогреваются именно те URLЧастичная публикация или несколько страниц, которые, как вы знаете, были изменены.
Определенные URL-адреса с теплым приоритетом после частичной публикации
bash
curl -X POST https://api.cacherocket.com/web/v1/public/webhooks/netlify \
  -H "Content-Type: application/json" \
  -H "X-Public-Key: YOUR_PUBLIC_KEY" \
  -H "X-Secret-Key: YOUR_SECRET_KEY" \
  -d '{"urls":["https://www.example.com/","https://www.example.com/pricing"]}'

Версель

Добавьте URL-адрес Cache Rocket в качестве крючка развертывания или веб-перехватчика интеграции в настройках вашего проекта, запуская успешные производственные развертывания. Аутентифицируйтесь с помощью заголовков X-Public-Key и X-Secret-Key.

Next.js приложения

Если вы используете @cacherocket/next, вы также можете открыть onVercelDeploy() по адресу /api/cacherocket/deploy и указать Deploy Hook на свое собственное приложение вместо общедоступного URL-адреса веб-перехватчика.

Tip

Netlify

Используйте веб-перехватчик уведомлений для события **развертывание успешно**, указывая на путь Netlify с теми же заголовками ключей API.

Shopify

Наведите веб-хуки публикации темы или приложения на путь Shopify, чтобы изменения на витрине обновлялись сразу после их публикации.

Любой конвейер CI

В этом запросе нет ничего специфичного для платформы — это HTTP POST. Добавьте его как последний шаг любого конвейера.

В запросе нет ничего специфичного для платформы — это HTTP POST.Добавьте его как последний шаг любого конвейера.

Действия GitHub
yaml
- name: Warm Cache Rocket after deploy
  run: |
    curl -X POST https://api.cacherocket.com/web/v1/public/webhooks/vercel \
      -H "Content-Type: application/json" \
      -H "X-Public-Key: ${{ secrets.CACHEROCKET_PUBLIC_KEY }}" \
      -H "X-Secret-Key: ${{ secrets.CACHEROCKET_SECRET_KEY }}" \
      -d '{"hostname":"www.example.com"}'

Никогда не кодируйте секретный ключ в файле конвейера жестко.

Альтернатива: триггерWarm

Существует также более простая конечная точка, которая принимает ключи в теле, а не в заголовках, что подходит для сред, где установка пользовательских заголовков затруднительна:

Существует также более простая конечная точка, которая принимает ключи в теле, а не в заголовках, что подходит для сред, где установка пользовательских заголовков затруднительна:

bash
curl -X POST https://cacherocket.com/api/wordpress/triggerWarm \
  -H 'Content-Type: application/json' \
  -d '{"publicKey":"YOUR_KEY","secretKey":"YOUR_SECRET","hostname":"example.com"}'

Сопутствующий warmUrls приоритет конечной точки повышает явный список URL-адресов.

Последовательность имеет большее значение, чем люди ожидают:

Последовательность имеет большее значение, чем люди ожидают:

  1. 1

    Развертывание завершено, и новая версия доступна

    Прогрев релиза, выпуск которого еще не завершен, просто кэширует старый.

  2. 2

    Очистите CDN, если при развертывании были изменены кэшированные выходные данные.

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

  3. 3

    Затем вызвать потепление

    Теперь теплый запуск извлекает действительно новый контент и заполняет им кэш.

Слишком раннее потепление – классическая ошибка

Распространенные проблемы

Распространенные проблемы

Вебхук возвращает 401.
Ключи неправильные, просрочены или заменены новой парой.Убедитесь, что оба имени заголовка точно соответствуют X-Public-Key и X-Secret-Key, и найдите усеченные значения в своем хранилище секретов.
Возвращает успех, но ничего не греет.
Имя хоста в теле, вероятно, не соответствует ни одному активному нагревателю.Подтвердите точное имя хоста, включая www , и то, что соответствующий обогреватель активен.
Потепление продолжалось, но посетители по-прежнему попадали на холодные страницы.
Почти всегда заказ — либо он сработал до того, как развертывание было активным, либо CDN была очищена после прогрева, а не до этого.Добавьте этап очистки перед триггером.
Предварительные развертывания занимают мой бюджет URL.
Ограничьте использование веб-перехватчика только производственными развертываниями.
Это то же самое, что чистка CDN?
Нет. Триггеры развертывания начинают нагреваться;они ничего не отменяют.Интеграции CDN очищают, а затем снова нагревают.Многие команды используют оба.