index.html is edge-cached for 24h, so deployed fixes can take a day to reach users
Los mantenedores suelen responder en 1 día
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Found while investigating #659, where a fix merged on 22 Sept and a tester still saw the old behaviour a day later.
The policy
$ curl -sI https://app.block52.xyz/
cache-control: public,max-age=10,s-maxage=86400
server: cloudflare
cf-cache-status: HIT
s-maxage=86400 applies to index.html. In a Vite SPA that file is the only unhashed entry point: it names the hashed bundle (/assets/index-BaWNmZ57.js). Cache the HTML for a day and the edge keeps handing out a day-old bundle reference, so a user gets the old JavaScript no matter how recently we deployed.
That is backwards. The hashed assets are content-addressed and safe to cache forever; the HTML that points at them must be revalidated.
Why it matters beyond one stale page
It makes verification unreliable. In #659 the sequence was: fix merged 22 Sept 09:25 UTC → tester reports it still broken 22 Sept 23:57 → the build they were served was replaced at 23 Sept 02:21. Nobody could tell whether the fix was wrong or simply not yet visible, and the same ambiguity will attach to every "still happening" report — including the live-verification pass in #646.
It also means a bad deploy is equally sticky: a rollback does not reach users promptly either.
Suggested
-
index.html:cache-control: no-cache(ormax-age=0, must-revalidate). The file is ~1KB; revalidation is cheap and the assets it references still come from cache. -
/assets/*(hashed):public, max-age=31536000, immutable. Safe precisely because the filename changes with the content. - Confirm where the header is set —
vercel.jsonin this repo, or a Cloudflare rule in front of it. The response is served by Cloudflare (cf-cache-status: HIT), so a page/cache rule there can override whatever the origin sends. - After changing it, verify: deploy, then
curl -sI https://app.block52.xyz/ | grep -iE 'cache-control|last-modified'and check a fresh bundle name appears without waiting. - Worth recording the deployed commit somewhere reachable — a
<meta name="build-commit">or a/version.json— so a bug report can say which build it came from. Today the only handle is the bundle filename.
Refs #659, #646.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2
- Forks
- 5
- Merge medio
- 22 h 35 min
- PR fusionados (30 d)
- 91
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de block52/ui
-
guards: accept readonly arrays (and other array-likes) in isEmpty / hasElements / safeLengthAbiertoenhancement tech debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Hero hole cards render face down after ~1h on a table (auth signature never renewed)Posiblemente ocupada @bitcoinbrisbane la tomó hoy. Abiertobug UI Week 2
block52/ui#953 · 2 asignados ·
Los mantenedores suelen responder en 1 día
-
Time bank clock is hidden under the NFT avatar: move it left of the seat numberPosiblemente ocupada @Dzeezbtc la tomó hoy. Abiertogame-flow UI ux Week 2
Los mantenedores suelen responder en 1 día
-
feat(ui): player notes and tags — click a seat to note a player; tag icons (fish, shark, tight, loose…) show by their pillPosiblemente ocupada @Dzeezbtc la tomó hace 2 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
chore(ui): move existing inline null/empty and typeof checks to the guardsPosiblemente ocupada @bitcoinbrisbane la tomó hace 2 días. Abiertorefactor tech debt UI
Los mantenedores suelen responder en 1 día
Todos los issues de block52/ui
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
formbricks/formbricks#9918 ·
Los mantenedores suelen responder en 1 día
-
Chat: Resize question overlayAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
thecodacus/pithagoras#364 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
openclimatefix/quartz-frontend#823 ·
Los mantenedores suelen responder en 4 días
-
area:agent-manager community needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
`contacts.create` posts to `/audiences/undefined/contacts` when `audienceId` is undefinedPosiblemente ocupada @RaphaelFakhri la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
resend/resend-node#1176 ·
Los mantenedores suelen responder en 1 día