Changeset 7a93fcf in Klonkt


Ignore:
Timestamp:
07/29/2026 03:38:18 PM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
6089c53
Parents:
d56d471
Message:

/media zegt nu dat een upload nooit verandert

shaer-uwx: de Shaer-app laadde plaatjes opnieuw die het vorige scherm net
getoond had. Een van de drie oorzaken zat hier: de statische /media had geen
cache-header, dus elke platform-loader mocht elk plaatje op elk scherm opnieuw
opvragen. De thumbs en de avatar-proxy zeiden al max-age; de originelen waren
de ene plek die het vergat.

Een upload verandert nooit onder zijn naam (unieke bestandsnamen; een nieuwe
upload is een nieuwe naam), dus dat mag een jaar en immutable zijn.

Changed files:
src/server.js

  • /media: Cache-Control public, max-age=1y, immutable (dev: 0)

remarks: 334 tests groen; geverifieerd op een lokale boot met curl. De twee
andere oorzaken (AsyncImage zonder geheugen op iOS, te smalle preload-sweep op
Android) zitten in de app-repos.

-robo
Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/server.js

    rd56d471 r7a93fcf  
    264264  // refuses to render it). Set cross-origin explicitly for /media.
    265265  setHeaders: (res) => res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin'),
     266  // An upload never changes under its name (unique filenames; a new upload is
     267  // a new name), so say so. Without this the default is max-age=0 and every
     268  // platform image-loader may re-ask for every image on every screen: Shaer's
     269  // cards visibly re-loaded what the previous view had just shown. The thumbs
     270  // and the avatar proxy already declared this; the originals were the one
     271  // place that forgot.
     272  maxAge: isDev ? 0 : '1y',
     273  immutable: !isDev,
    266274}));
    267275
Note: See TracChangeset for help on using the changeset viewer.