Трыгеры дэплою
Прагравайце аўтаматычна пасля кожнага рэлізу — з Vercel, Netlify, Shopify або любога CI-канвеера.
9 min read
Разгортванне - гэта адзіны самы надзейны спосаб астудзіць увесь сайт адначасова. Рэліз анулюе кэшы ў цэлым, і кожны наведвальнік у наступныя хвіліны адначасова аплачвае кошт перабудовы - менавіта тады, калі вы, хутчэй за ўсё, будзеце назіраць за праблемамі.
Разгортванне трыгераў робіць пацяпленне часткай дастаўкі. Калі ваша разгортванне атрымоўваецца паспяхова, ваша платформа выклікае Cache Rocket, і пачынаецца разагрэў без адкрыцця прыборнай панэлі.
URL-адрасы Webhook і прыклады знаходзяцца ў раздзеле Уліковы запіс → Разгарнуць інтэграцыю.
Як гэта працуе
Вы даяце сваёй хостынгавай платформе або 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"}'| Платформа | Шлях вэб-хука |
|---|---|
| Vercel | /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"]}'Vercel
Дадайце URL-адрас Cache Rocket як хук разгортвання або вэб-хук інтэграцыі ў наладах вашага праекта, які запускаецца пры паспяховым разгортванні вытворчасці. Прайдзіце аўтэнтыфікацыю з дапамогай загалоўкаў X-Public-Key і X-Secret-Key.
Next.js прыкладанні
Калі вы выкарыстоўваеце @cacherocket/next, вы таксама можаце выставіць onVercelDeploy() на /api/cacherocket/deploy і накіраваць гачок разгортвання наваша ўласнае прыкладанне замест агульнадаступнага 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"}'Ніколі не закадзіруйце сакрэтны ключ у канвеерным файле
Альтэрнатыва: triggerWarm
Існуе таксама больш простая канчатковая кропка, якая прымае ключы ў целе, а не ў загалоўках, што падыходзіць для асяроддзяў, дзе ўсталёўваць карыстальніцкія загалоўкі няёмка:
Існуе таксама больш простая канчатковая кропка, якая прымае ключы ў целе, а не ў загалоўках, што падыходзіць для асяроддзяў, дзе ўсталёўваць карыстальніцкія загалоўкі няёмка:
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?
- No. Разгарнуць трыгеры пачаць награванне;яны нічога не анулююць.[Інтэграцыі CDN] (/documentation/cdn-integrations) ачышчаюць, а потым разаграваюць.Многія каманды выкарыстоўваюць абодва.