Cache-Lebensdauer: den Ein-Jahres-Default in beide Skills aufnehmen
Design-Paritaet 1.4 -> 1.5: neuer Warnpunkt in der Vergleichsschleife. Bevor man eine Rueckmeldung "immer noch nicht behoben" fuer bare Muenze nimmt, gehoeren die Response-Header geprueft. Ohne config.cache_period liefert TYPO3 seinen Core-Default von einem Jahr als max-age aus, und config.sendCacheHeaders = 1 (von t3bootstrap gesetzt) reicht ihn an Browser und Proxys weiter. Eine erteilte Frist ist nicht widerrufbar, ein serverseitiges cache:flush erreicht solche Clients also nie. Da Erweiterungen ihre Konfiguration teils als Inline-JS in die Seite schreiben, reproduziert eine alte Kopie laengst behobene Fehler exakt. Cutover 1.0 -> 1.1: derselbe Punkt als Go-live-Pruefung in Phase 2. Dort wiegt er schwerer, weil nach dem Livegang jeder Besucher mit einer bereits erteilten Jahresfrist festhaengt. Beides stammt aus einem realen Fall: Rueckmeldungen aus dem Kundennetz meldeten Fehler weiter, die im Agenturnetz nachweislich behoben waren. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ name: typo3-t3bootstrap-live-design-parity
|
||||
description: "Match a TYPO3 v14 t3bootstrap-based build (local DDEV) to a reference LIVE site page by page — the frontend/design phase after a v11->v14 upgrade. Use when making an upgraded TYPO3 site look like its old/live counterpart, when doing per-page visual parity against a reference URL, when content that exists in the DB isn't rendering after a v11->v14 migration, or when customizing a t3bootstrap sitepackage's templates/SCSS/settings. Covers: the Playwright compare loop (computed style + CSS rule), the settings-vs-SCSS decision, the t3b_core spacing system (spacing.yaml / tx_t3b_spacing) and why spacing must never be fixed in SCSS, recurring structural fixes (stranded colPos, missing templateLayout partials, template partialRootPaths precedence/shadowing, on-demand component CSS, unregistered CTypes), a full visual-parity checklist (layout/width, typography, colors, links/buttons, equal-sizing, icons, borders, footer, header/nav, hero carousel incl. why Bootstrap autoplay cannot be switched off via the interval), diagnosing regressions caused by an editor's SAVE (CKEditor dropping undeclared classes, FlexForm selects with no empty item flipping to "yes"), and cache-safe techniques (full-bleed bands, image-border restyle, responsive crop variants, client-side randomisation, FAL-via-DataHandler). Assumes the site already boots on v14 (see the v11->v14 upgrade skill)."
|
||||
metadata:
|
||||
author: Wappler
|
||||
version: "1.4"
|
||||
version: "1.5"
|
||||
---
|
||||
|
||||
# TYPO3 v14 t3bootstrap — live-design parity
|
||||
@@ -48,6 +48,20 @@ placeholders below from the site you're matching; keep a per-project log of what
|
||||
path already returned the new one. Symptom: your fix "doesn't work" in the browser but is provably
|
||||
live on the server. Cross-check with an in-page `fetch(location.pathname + '?x=' + Math.random(),
|
||||
{cache:'no-store'})` and compare against the DOM before concluding anything about the fix.
|
||||
- **⚠⚠ CHECK THE RESPONSE HEADERS BEFORE BELIEVING ANY "still not fixed" REPORT.**
|
||||
`curl -sI <url> | grep -iE 'cache-control|expires'`. With `config.sendCacheHeaders = 1` (t3bootstrap
|
||||
sets it) and **no `config.cache_period`**, TYPO3 emits its core default lifetime — `CacheLifetime
|
||||
Calculator::defaultCacheTimeout = 365 * 86400`, i.e. **`max-age` of ONE YEAR** — to browsers and,
|
||||
since the response carries no `private`, to shared proxies. A `max-age` already handed out
|
||||
**cannot be revoked**: `cache:flush` clears the SERVER cache only, that client simply stops asking.
|
||||
Deploys and editorial changes then never reach returning visitors, and anything rendered INTO the
|
||||
document comes back stale with it — including inline JS config (e.g. `ws_slider` writes its whole
|
||||
configuration as `let options_slider_<uid> = {...}` in the page), so a long-fixed bug reproduces
|
||||
perfectly. Tell-tale: people on YOUR network see every fix, people on the CUSTOMER's network see
|
||||
none. Fix at the source — `config.cache_period = 3600` (caps the server cache AND the emitted
|
||||
max-age), or `sendCacheHeaders = 0` to stop instructing the client at all. Note the lifetimes
|
||||
already issued cannot be recalled: those users need one hard reload. Assets are fine either way
|
||||
(TYPO3 appends `?<mtime>` to CSS/JS URLs).
|
||||
2. With `browser_evaluate`, capture the real element's **computed style AND its explicit CSS rule**
|
||||
(getComputedStyle + walk `document.styleSheets` for the selector). Don't assume inheritance.
|
||||
3. Diff vs DDEV → decide **setting vs SCSS** (below) → apply → flush → re-screenshot → verify.
|
||||
|
||||
Reference in New Issue
Block a user