--server-cache
Caches successful GET / and POST / render results on disk so equivalent later GETs are served without re-rendering. The optional PATH is a persistent cache directory; without one, a directory is created under the server’s temp dir and does not survive a restart.
The cache key combines the server’s startup arguments with the request’s URL and render parameters, so changing how the server was launched leaves prior entries unreachable. A signed GET and an unsigned POST for the same render share one entry — the signature is authentication, not cache identity.
A GET may be served from the cache; a POST always re-renders, but writes its result (overwriting any prior entry) for later GETs. Responses carry Cache-Control: public, ETag, and Last-Modified, and a GET honors If-None-Match / If-Modified-Since with 304. The cache validates each hit against its stored digest and re-renders on a mismatch. MCP requests are never cached.
DELETE / purges the entry for the same canonical render arguments, sent as query parameters or a JSON body: 204 when a fresh entry was expired, 410 when nothing was cached. A bare DELETE / with no arguments purges the entire cache. Auth follows the GET rules — credentials when configured, else a valid URL signature — so a purge is never more accessible than a cached read. Without --server-cache, DELETE returns 404.
Tune freshness with --server-cache-ttl and the size bound with --server-cache-size-limit. The Browser as a CDN example runs the cache, signed URLs, and a Bearer-token purge end to end.
This is an Enterprise-tier flag.