Триггеры деплоя
Прогревайте автоматически после каждого релиза — из Vercel, Netlify, Shopify или любого CI-конвейера.
9 min read
Развертывания — это самый надежный способ одновременно отключить весь сайт. Релиз полностью аннулирует кеши, и каждый посетитель в последующие минуты одновременно оплачивает стоимость восстановления — именно тогда, когда вы, скорее всего, будете наблюдать за проблемами.
Триггеры развертывания делают потепление частью процесса доставки. Когда ваше развертывание успешно, ваша платформа вызывает Cache Rocket, и начинается разогрев, при этом никто не открывает панель управления.
URL-адреса веб-перехватчиков и примеры находятся в разделе Аккаунт → Развертывание интеграции.
Как это работает
Вы предоставляете своей хостинговой платформе или CI URL-адрес, по которому можно позвонить после успешного развертывания. Запрос содержит ваши ключи API в виде заголовков, а также небольшое тело JSON, указывающее, что нужно согреть.
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 | Частичная публикация или несколько страниц, которые, как вы знаете, были изменены. |
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.Добавьте его как последний шаг любого конвейера.
- 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
Существует также более простая конечная точка, которая принимает ключи в теле, а не в заголовках, что подходит для сред, где установка пользовательских заголовков затруднительна:
Существует также более простая конечная точка, которая принимает ключи в теле, а не в заголовках, что подходит для сред, где установка пользовательских заголовков затруднительна:
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
Развертывание завершено, и новая версия доступна
Прогрев релиза, выпуск которого еще не завершен, просто кэширует старый.
- 2
Очистите CDN, если при развертывании были изменены кэшированные выходные данные.
В противном случае прогрев перечитывает то, что уже кэшировано, и ничего не улучшается.
- 3
Затем вызвать потепление
Теперь теплый запуск извлекает действительно новый контент и заполняет им кэш.
Слишком раннее потепление – классическая ошибка
Распространенные проблемы
Распространенные проблемы
- Вебхук возвращает
401. - Ключи неправильные, просрочены или заменены новой парой.Убедитесь, что оба имени заголовка точно соответствуют
X-Public-KeyиX-Secret-Key, и найдите усеченные значения в своем хранилище секретов. - Возвращает успех, но ничего не греет.
- Имя хоста в теле, вероятно, не соответствует ни одному активному нагревателю.Подтвердите точное имя хоста, включая
www, и то, что соответствующий обогреватель активен. - Потепление продолжалось, но посетители по-прежнему попадали на холодные страницы.
- Почти всегда заказ — либо он сработал до того, как развертывание было активным, либо CDN была очищена после прогрева, а не до этого.Добавьте этап очистки перед триггером.
- Предварительные развертывания занимают мой бюджет URL.
- Ограничьте использование веб-перехватчика только производственными развертываниями.
- Это то же самое, что чистка CDN?
- Нет. Триггеры развертывания начинают нагреваться;они ничего не отменяют.Интеграции CDN очищают, а затем снова нагревают.Многие команды используют оба.