Package 1: SsrPurgeService posts to the node /__purge (endpoint+secret in var/vitec-ssr-purge.env, outside git) and logs every attempt to tx_vitec_ssrpurgelog. DataHandler hooks queue per request and flush once: pages with nav-relevant field changes and all tx_news_/tx_vitec_ records purge everything, other page/content edits purge the hosting page path. Gated by the routing flag and the new Site Set switch vitec.ssr.autoPurge. Flipping the SSR switch ON purges everything once. CLI: vitec:ssr-purge, vitec:ssr-health (samples /__health into tx_vitec_ssrhealthlog, 14 days kept, scheduler-ready). Package 2: dashboard widgets vitecSsrStatus (live health, release, switch, last purge) and vitecSsrStats (purge counts, failures, uptime, response time). Package 3: backend module web_vitecssr with manual purge (paths or everything) and both protocols. Tested end to end against the running node (purge single/all 200, health sample logged).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Site set Vitecset: new bool setting vitec.ssr.enabled (default off,
backend switch under Site Management > Settings > VITEC Settings)
- SsrFlagService derives var/vitec-ssr-on.flag from the setting;
SyncSsrFlag middleware (frontend + backend) re-syncs per request
because TYPO3 v14 fires no event on site settings save;
vitec:ssr-flag CLI command for status/--sync
- public/.htaccess: flag-gated block proxies page requests [P] to
https://vitec-ssr.evomedien.de (mod_proxy incl. https target verified
on this host 2026-11-09), same exclusions as the SPA fallback block;
completely inert while the flag file is absent
- Emergency off without TYPO3: delete var/vitec-ssr-on.flag
- Tested end to end: flag on -> pages proxied to VPS Caddy (502 while
the SSR node is not deployed yet), /_json untouched; flag off ->
SPA shell exactly as before
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>