You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中从数据库重新加载音频文件失效问题求助

解决音频无法重新加载的问题

问题核心是浏览器缓存:浏览器会把首次加载的音频文件存到本地,后续请求相同URL时直接读取缓存,哪怕服务器上的文件已经更新,调用load()也没法让浏览器重新请求新文件。

直接有效的解决办法是给音频URL追加唯一查询参数,让浏览器判定这是新资源,从而重新从服务器拉取最新文件:

比如修改代码为:

function action() {
  // 用当前时间戳做参数,保证每次请求的URL都唯一
  var audioUrl = "https://mydb.com/output.wav?timestamp=" + Date.now();
  var audio = new Audio(audioUrl);
  audio.play();
}

也可以用随机数当参数:

function action() {
  var audioUrl = "https://mydb.com/output.wav?rand=" + Math.random();
  var audio = new Audio(audioUrl);
  audio.play();
}

如果是在更新数据库后触发播放,只要保证每次播放用的URL都带不同参数即可,无需额外调用load()——创建新的Audio实例时会自动加载新URL对应的资源。

另外也可以在服务器端给音频文件配置更严格的缓存规则(比如缩短缓存过期时间),但前端追加参数的方法无需修改服务器配置,见效更快。

内容的提问来源于stack exchange,提问作者Pelgoos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:55:15