A cache is a local copy so you do not repeatedly download the same data.
Public registry JSON is designed for CDNs and for your own store.
Cache-Control: public, max-age=60, stale-while-revalidate=600on index and recordsmax-age=30on meta, search, and the changes feed- superseded
/registry/v1/revisions/{n}.jsonis immutable (max-age=31536000) ETag: "rev-N"where N is the dataset revisionLast-Modifiedwhen a last-changed timestamp existsIf-None-Match/If-Modified-Since→304 Not ModifiedAccess-Control-Allow-Origin: *
Cache records by id plus revision. When an id appears in updated, discard the old record. Do not cache Check/Submit POSTs.
Icons and screenshots are not proxied. Treat those URLs as volatile.
The API has a generous per-network GET limit so bulk sync should use static files, not a tight loop against /api/v1/apps.