Наверняка как-то просто делается.
Не особо, на самом деле.
Самое простое - сделать ajax-запрос этих файлов и заголовками кеширования сообщить браузеру, что их нужно сохранить. В таком случае последующие запросы будут отрабатываться из кеша. Но есть несколько проблем:
- Саму страницу нужно открывать при наличии интернета.
- Большие файлы проживут в кеше браузера меньше.
- Никакого контроля над тем, когда браузер выкинет файл из кеша у нас нет. Вернее, мы можем заставить браузер выкинуть файл, но не можем заставить его сохранить.
Перечисленные проблемы решает
Service Worker, но его внедрение, особенно в этом контексте, дело нетривиальное. Достаточно сказать, что Paul Lewis посвятил этой задаче
15 видео. Он, правда, делал видеоплеер, но аудиоплеер сделать не намного проще.