nuxt-site-config copies every NUXT_SITE_* variable into the public site
config, so NUXT_SITE_CACHE_PURGE_TOKEN reached every page's payload as
cachePurgeToken (and NUXT_SITE_CACHE_ALLOW_PROXIED as cacheAllowProxied).
- The purge settings move to runtimeConfig cachePurge.token
(NUXT_CACHE_PURGE_TOKEN) and cachePurge.allowProxied
(NUXT_CACHE_PURGE_ALLOW_PROXIED), outside that prefix.
- The old siteCache.* names keep working for one release: a non-empty
new token wins, either allowProxied flag turns it on, and one
deprecation warning per process names the variables (never a value).
- The shared Nitro plugin server/plugins/site-cache-purge.ts strips
cachePurgeToken and cacheAllowProxied from nuxt-site-config's stack on
site-config:init, so a site on the old names leaks nothing either; it
does nothing without nuxt-site-config.
- The shared lib, route and plugin and tests/sitePurge.test.ts are
byte-identical in vue-journal-layer, vue-menu-layer and vue-faq-layer,
with three sha256 pins.
- README: new names, the deprecation, the stripping and the advice to
rotate a token ever set under the old name.
Nitro's cached handler renders from a header-less copy of the request, so
under swr route rules useJournalApi, /rss.xml and the sitemap source
forwarded only the Nuxt peer and every cache miss shared one Journal API
rate-limit bucket (deferred in Phase 16). A Nitro plugin records
x-forwarded-for plus the peer in event.context.journalForwardedFor on the
request hook; the three callers forward it. Same key as the host app's
workaround, which keeps working. The acme SSR smoke's x-forwarded-for check
on the now route-cached playground is the test.
- privateRevalidate sets max-age=0 on cache-control values with s-maxage
- server/plugins/journal-revalidate.ts wraps res.setHeader per request, so
Nitro's 200 and h3's 304 answers both carry it
- purge-check: max-age=0 on 200 and 304, purged _payload.json, a second
purge after re-caching, X-Real-IP refused, 404 on a server without a token
- README: cachePurgeToken row and a Site cache purge section