为什么浏览器在预加载后会多次加载音频文件?
Why does the browser load audio files several times even after preload?
我正在 Safari 移动版上监控我们正在开发的 Web 应用程序的网络并看到:
文件之前已预加载(我想这就是为什么它在 3 行的第一行中显示“(磁盘)”),这是网络选项卡中 safari 网络检查器中的网络输出。
现在我想知道,为什么浏览器似乎先从磁盘加载它然后再次从 url 加载两次(?)。
我是不是读错了输出?
预加载是这样发生的(在用户交互时):
function preloadAudio(url)
{
console.log("trying to preload "+ url);
var audio = new Audio();
loadedAudioFiles.push(audio);
audio.addEventListener('canplaythrough', loadedAudio, false);
audio.src = url;
audio.load();
audio.onerror = function failed(e)
{
console.log(e);
$("#NETWORKERROR").show();
};
}
我应该挖得更深。
遗憾地发现了这句话
Note: The preload attribute is supported in Safari 5.0 and later. Safari on iOS never preloads.
尽管这种说法似乎也是错误的:我经常将预加载的音频文件加载到我的系统中(通过在预加载功能 运行 之后切断连接然后触发声音来检查)。但是 Safari 移动版似乎做了一些背景魔法来决定何时加载文件,何时不加载文件。 :-(
我正在 Safari 移动版上监控我们正在开发的 Web 应用程序的网络并看到:
文件之前已预加载(我想这就是为什么它在 3 行的第一行中显示“(磁盘)”),这是网络选项卡中 safari 网络检查器中的网络输出。
现在我想知道,为什么浏览器似乎先从磁盘加载它然后再次从 url 加载两次(?)。
我是不是读错了输出?
预加载是这样发生的(在用户交互时):
function preloadAudio(url)
{
console.log("trying to preload "+ url);
var audio = new Audio();
loadedAudioFiles.push(audio);
audio.addEventListener('canplaythrough', loadedAudio, false);
audio.src = url;
audio.load();
audio.onerror = function failed(e)
{
console.log(e);
$("#NETWORKERROR").show();
};
}
我应该挖得更深。
遗憾地发现了这句话
Note: The preload attribute is supported in Safari 5.0 and later. Safari on iOS never preloads.
尽管这种说法似乎也是错误的:我经常将预加载的音频文件加载到我的系统中(通过在预加载功能 运行 之后切断连接然后触发声音来检查)。但是 Safari 移动版似乎做了一些背景魔法来决定何时加载文件,何时不加载文件。 :-(