Тригери деплою

Прогрівайте автоматично після кожного релізу — з 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"}'

Ніколи не закодуйте секретний ключ у файлі конвеєра

Альтернатива: triggerWarm

Існує також простіша кінцева точка, яка приймає ключі в тілі, а не в заголовках, що підходить для середовищ, де налаштування власних заголовків є незручним:

Існує також простіша кінцева точка, яка приймає ключі в тілі, а не в заголовках, що підходить для середовищ, де налаштування власних заголовків є незручним:

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] (/documentation/cdn-integrations) очищає, а потім знову розігріває.Багато команд використовують обидва.