You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ops/gnoweb: the CDN serves one visitor's theme to everyone and appends no-store to every response #6421
The Cloudflare layer in front of gno.land and onyx caches one visitor's theme for everyone, and adds no-store to every response. Checked on both chains on 2026-10-28.
Try it:repro.sh (sh repro.sh or sh repro.sh onyx.testnets.gno.land)
What a visitor with no cookie receives from the cache, scripts off, after a dark-theme visitor opened the same URL:
1. Cached theme
gnoweb writes data-theme from the theme cookie (handler_http.go:307), and the cache key is the URL alone. Everyone gets the first visitor's theme, until the JS corrects it after paint (a flash). Fix: render no theme from the cookie on cacheable HTML and let the inline script apply it before paint, or bypass the cache when a theme cookie is sent.
2. no-store on everything
gnoweb sends public, max-age=31536000, immutable for fingerprinted assets (cache.go:10); no-store is added downstream, so browsers refetch CSS, JS and fonts on every page. HTML gets no-store too, yet is cached at the edge. Fix: drop the appended no-store, at least on /public/.
3. Short edge TTL
A cold page takes 1.0–1.3 s to the first byte, a cached one 0.12 s, and cached pages expire within seconds. TTLs per page type: #5768.
4. When mainnet gets the new gnoweb (v1.7.0, #6372: mainnet skips v1.6.0)
Activity