Personally, I’d rely more so on browser caching + service worker caching instead of application-level caching.
What I do is:
(1) Every model’s filename is a hash of the content (run crc32 path-to-file.gltf)
(2) Have a service worker setup to always cache any .gltf/.glb/.bin
(3) Disable range requests in SceneLoader[1]
(4) Have CDN or NGINX or whatever return proper Cache-Control headers (immutable, public)
(5) Have a manifest in your JS code which lists out the filenames mapping.
Additionally, I always use GLBs instead of GLTF. This minimizes the number of requests the browser makes, which can still be a bottleneck even with Keep Alive and all that stuff.
Look awesome =)
I have a lot of GLB to make in cache, even if I have a manifest file for each, no one are in cache, so the ImportMesh always redownload the file.
To let me understand and see correctly, to be sure to not make mistakes.
Can you share me a PG, GIT or other?