Next.js
Усталюйце @cacherocket/next для выявы CDN праз next/image, дадатковы `/_next/static` CDN і цёплыя URL-адрасы пасля кожнага разгортвання — хостынг застаецца на Vercel, Netlify, Cloudflare Pages або вашым уласным хасце Node.
10 min read
Cache Rocket для Next.js - гэта пакет CDN выявы + дадатковы CDN `/_next/static` + падагрэў кэша, які знаходзіцца побач з вашым існуючым хостам.Вы захоўваеце SSR і HTML там, дзе яны ёсць (Vercel, Netlify, Cloudflare Pages або ваш уласны хост Node).Cache Rocket аптымізуе і дастаўляе выявы, можа абслугоўваць хэшаваны JS/CSS з кіраванага CDN і можа падаграваць URL-адрасы пасля кожнага разгортвання.
Што ўключае @cacherocket/next
withCacheRocket для next.config, карыстацкі загрузчык next/image на img.cacherocket.com, дадатковы assetPrefix для /_next/static праз Managed CDN (assets.cacherocket.com), і памочнікі сервера (warm, purge, uploadStatic,onVercelDeploy ).Ён не замяняе хостынг Next.js або Next.js Data Cache/use cache API.
Планы
Free ўключаюць пробную версію 25 пераўтварэнняў малюнкаў у месяц і 1 ГБ прапускной здольнасці CDN выявы.Статычны CDN актываў патрабуе кіраванага CDN на платным плане (той жа лічыльнік assets.cacherocket.com, што і WordPress).Глядзіце [Планы і ліміты] (/documentation/plans-and-limits).
1. Стварыце сайт Next.js
На прыборнай панэлі адкрыйце Уліковы запіс → Next.js , стварыце сайт для свайго імя хаста і скапіруйце токен сайта, ідэнтыфікатар сайта і ключы API.Дадайце запісы ў дазволены спіс хоста выявы для кожнага крыніцы, з якога вы загружаеце выявы (імя хоста вашага сайта заўсёды ўключана).
2. Усталюйце пакет
@cacherocket/next апублікаваны ў публічным рэестры npm:
npm i @cacherocket/next3. Зменныя асяроддзя
# Public — safe in the browser / image URLs
CACHEROCKET_SITE_TOKEN=site_xxx
# Absolute origin for relative /public images (optional but recommended)
CACHEROCKET_ASSET_ORIGIN=https://www.example.com
# Optional — customer static CDN (/_next/static) from Account → Next.js
# Do not use CacheRocket.com's internal CACHEROCKET_CDN_URL
CACHEROCKET_STATIC_CDN_URL=https://assets.cacherocket.com/org_…/site_…/static
# Server-only — warm / purge / deploy / static upload
CACHEROCKET_PUBLIC_KEY=...
CACHEROCKET_SECRET_KEY=...
CACHEROCKET_SITE_ID=...4. Абгарніце next.config
import type { NextConfig } from 'next'
import { withCacheRocket } from '@cacherocket/next'
const nextConfig: NextConfig = {
// your config
}
export default withCacheRocket(
{
siteToken: process.env.CACHEROCKET_SITE_TOKEN,
assetOrigin: process.env.CACHEROCKET_ASSET_ORIGIN,
staticCdnUrl: process.env.CACHEROCKET_STATIC_CDN_URL,
},
nextConfig
)5. Выкарыстоўвайце наступны/малюнак як звычайна
Аддавайце перавагу абсалютным URL-адрасам малюнкаў або адносным шляхам, калі ўстаноўлена CACHEROCKET_ASSET_ORIGIN.Загрузчык перазапісвае запыты ў URL-адрасы пераўтварэння на аснове шляху на img.cacherocket.com :
https://img.cacherocket.com/i/site_xxx/w_1200,q_75,f_auto/https%3A%2F%2F...Мяккі збой па квоце
Калі план або штомесячная квота пераўтварэння перавышаны, Cache Rocket перанакіроўвае на зыходны URL выявы, таму старонка ўсё яшчэ загружаецца.
6. Дадаткова: CDN са статычным актывам ( `/_next/static` )
Для праграм Next.js, размешчаных на ўласным хостынгу або не ад Vercel (або калі вы хочаце хэшаваць JS/CSS ад вашага паходжання), уключыце CDN статычнага актыву на Уліковы запіс → Next.js.Для гэтага ў вашым плане патрабуецца Кіраваны CDN.Cache Rocket захоўвае выхад зборкі ў OVH пад вашым шляхам арандатара і абслугоўвае яго ад Bunny на assets.cacherocket.com.HTML і SSR застаюцца на вашым хасце.
Скапіруйце staticCdnUrl у CACHEROCKET_STATIC_CDN_URL (ніколі не CacheRocket унутраны CACHEROCKET_CDN_URL .com).Пасля кожнага next build загружайце актывы:
npx cacherocket-next upload-staticimport { uploadStatic } from '@cacherocket/next/server'
await uploadStatic()7. Гарачае пры разгортванні
Дадайце апрацоўшчык маршруту і накіруйце на яго хук Vercel Deploy (ці эквівалентны вэб-хук):
import { onVercelDeploy } from '@cacherocket/next/server'
export const POST = onVercelDeploy()Або выклічце памочнікаў са сцэнарыя або кроку CI:
import { warm, purge } from '@cacherocket/next/server'
await warm({ urls: ['https://www.example.com/'] })
await purge({ rewarm: true })URL-адрасы вэб-хукаў платформы без пакета npm разглядаюцца ў раздзеле [Трыгеры разгортвання] (/documentation/deploy-triggers).
Экспарт пакетаў
| Экспарт | Шлях імпарту | Прызначэнне |
|---|---|---|
withCacheRocket | @cacherocket/next | next.config helper (загрузчык малюнкаў + дадатковы assetPrefix ) |
| загрузнік па змаўчанні | @cacherocket/next/image-loader | Карыстальніцкі загрузчык next/image |
warm / purge / uploadStatic / onVercelDeploy | @cacherocket/next/server | Памочнікі цёплай, ачышчальнай і статычнай загрузкі толькі для сервера |
upload-static | cacherocket-next CLI | Загрузка .next/static пасля зборкі ў кіраваны CDN |
Агульныя праблемы
- Выявы па-ранейшаму праходзяць праз
/_next/imageна маім хасце. - Пацвердзіце, што
withCacheRocketзмяшчае вашу экспартаваную канфігурацыю і штоCACHEROCKET_SITE_TOKENусталяваны падчас зборкі.Пераразмеркаваць пасля змены env vars. - Я бачу «Невядомы або неактыўны маркер сайта».
- Маркер у URL выявы не супадае з актыўным сайтам Next.js.Скапіруйце бягучы токен сайта з Уліковы запіс → Next.js і паўторна разгарніце.
- Аддаленыя выявы вяртаюць памылку або вяртаюцца да зыходнага URL.
- Дадайце імя хаста выявы ў спіс дазволеных сайтаў.Можна аптымізаваць толькі крыніцы з дазволенага спісу.Мяккі збой да зыходнага URL таксама адбываецца, калі вы перавышаеце квоту плана.
- Адносныя выявы
/publicаптымізаваць не атрымалася. - Усталюйце
CACHEROCKET_ASSET_ORIGIN(або паходжанне вашага агульнадаступнага сайта), каб Cache Rocket мог вырашыць абсалютны URL выбаркі. - Пераключальнік статычнага CDN кажа, што мой план не ўключае кіраваны CDN.
- Статычная дастаўка
/_next/staticвыкарыстоўвае кіраваны CDN (assets.cacherocket.com) і патрабуе плана зallowCdn.Image CDN на Free па-ранейшаму працуе празimg.cacherocket.com. /_next/static404 з CDN пасля разгортвання.- Уключыце статычны CDN на сайце, усталюйце
CACHEROCKET_STATIC_CDN_URL, паўторна разгарніце, каб прымяніўсяassetPrefix, затым запусціцеnpx cacherocket-next upload-staticпасляnext build. - Разгортванне разагрэву ніколі не запускаецца.
- Пацвердзіце, што вэбхук трапляе на ваш маршрут
/api/cacherocket/deploy(або агульнадаступны вэбхук разгортвання), што ключы API толькі для сервера іCACHEROCKET_SITE_IDусталяваны, і што імя хаста супадае з актыўным грэльнікам.Глядзіце Разгарнуць трыгеры.
Патрэбна дапамога?
Адкрыйце Уліковы запіс → Падтрымка і абярыце катэгорыю Next.js або пачніце з Ліквідацыя непаладак.Уключыце ідэнтыфікатар вашага сайта, версію пакета і тое, ці звязана праблема з дастаўкай выявы або разгортваннем пацяплення.