You typically use byte-range caching in libraries—either using an edge worker (a la Cloudflare) to create separate GET requests from the client's perspective or directly in the client.
https://github.com/protomaps/PMTiles
https://github.com/protomaps/PMTiles/blob/main/js/examples/m...