我有一个电子反应应用程序,我使用javascript音频元素播放音频文件。我有下面的东西。但是,即使我可以确认管道后更改本地磁盘中的音频文件,通过应用程序播放的音频也不会在30秒钟左右更新。
playAudio = (path) => {
this.audio = new Audio()
this.audio.src = filepath
this.audio.play()
}
this.playAudio('C:\Users\User\Documents\audio.mp3')
request.post({url: 'http://localhost:8080/requestAudio', body: object},
function(err, response, body) {
//do stuff
}
})
.pipe(fs.createWriteStream(`C:\Users\User\Documents\audio.mp3`)
.on('finish', () => {
this.playAudio('C:\Users\User\Documents\audio.mp3')
}
)
因此,我想知道是否存在某种由于电子或节点而导致的缓存机制,该机制从缓存中获取同一文件,而不检查文件内容是否不同。
我尝试禁用电子镀铬调试器网络标签上的缓存,但该选项卡没有 工作。
其他音频播放器npm模块似乎也以相同的方式工作。
或者,只要将同名的新文件通过管道传递给我,只要在清除旧文件时抓取最新文件,我就可以在文件名后附加某种数字。 但我宁愿每个文件名都有唯一的文件。
答案 0 :(得分:0)
万一有人遇到类似问题,我已经设法使用npm模块howler来解决此问题。每次需要重播更改后的音频文件时,对音频对象调用unload。
this.audio.unload()
this.audio = new Howl({
src: filepath
});