调用 audio.play() 会在浏览器中预缓存 HTML5 音频吗?

Will calling audio.play() pre-cache an HTML5 audio in the browser?

我有一堆音频片段需要在浏览器中反复播放。

据我所知,在调用 audio.play() 之前,audio = new Audio(src) 不会对实际源文件执行任何 IO。

是否可以保证下面的代码会在浏览器中缓存音频并最大限度地减少延迟?

audio = new Audio(src);
audio.volume = 0;
audio.play();

除了 volume=0 在某些基于 Safari 的浏览器(例如 IOS 上的浏览​​器中不起作用之外,这种方法还有什么缺点吗?

是否有更好的缓存短音频剪辑的方法?

您可以尝试将 audio 元素的 preload 属性设置为 auto :

audio = new Audio(src);
audio.preload = 'auto';

演示:

var aud = new Audio('http://upload.wikimedia.org/wikipedia/commons/5/5b/Ludwig_van_Beethoven_-_Symphonie_5_c-moll_-_1._Allegro_con_brio.ogg')
aud.preload = 'auto'
var bData = document.createElement('span')
document.body.appendChild(bData)
setInterval(() => bData.innerText = 'Buffered Time(in seconds): ' + (aud.buffered.length && aud.buffered.end(0)), 300)