Если в общем, тут дело в кэшировании, как ты и сказал. Это выглядит так:
1) Делаешь запрос на
https://test.ru/audio2) Получаешь данные.
3) Снова делаешь запрос на
https://test.ru/audio.
3.1) Браузер автоматически ставит заголовок if-none-match равным заголовку etag ответа на предыдущий запрос. Будем считать, что это маркер ответа.
4) Прежде чем идти на сервер, браузер проверяет локальный кэш и ищет данные с этим маркером.
4.1) Находит.
4.1.1) Если срок не истёк, возвращает этот кэш.
4.1.2) Идёт снова на сервер.
4.2) Не находит и идёт снова на сервер.