在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ audio的src鏈接不變、鏈接的內(nèi)容改變時怎么能實時更新內(nèi)容

audio的src鏈接不變、鏈接的內(nèi)容改變時怎么能實時更新內(nèi)容

項目使用vue-cli全家桶搭建的,我在某個頁面寫了一個音樂播放的標(biāo)簽:

<audio id="audio" autoplay class="hide" :src="audioUrl"></audio>

然后js部分:

playRecord() { //播放錄音
    const audio = document.getElementById('audio');
    //this.recorder.play(audio);
    audio.src = this.GLOBAL.pro1_r_ip + '/sr/tmp/cache_readingcut.wav';
    audio.load();
},
uploadAudio() { //上傳錄音
    this.stopRecord();
    const record = this.recorder.getBlob();
    const t = this;
    let data;
    let reader = new window.FileReader();
    reader.readAsDataURL(record);
    reader.onloadend = function () {
        data = reader.result;
        t.$axios.post(t.GLOBAL.pro1_ip + '/readingcutupload', {
            file: data
        }).then(res => {
            if (res.data.result === 1) {
                t.success('上傳成功!');
            } else {
                t.error(res.data.msg);
            }
        })
    };
}

然后問題來了:

我做的是一個網(wǎng)頁錄音的功能,用戶錄音后,前端這里把音頻文件傳給后端,然后后端存進(jìn)服務(wù)器,然后返給我一個所存放地址的鏈接,我直接播放那個鏈接里面的音頻文件。

現(xiàn)在后端給了一個固定的存放地址,但是里面的內(nèi)容是會實時刷新的,我傳了一個新的音頻里面就會刷新成新上傳的音頻文件,但是我用audio每次重新錄音后 讀取那個鏈接的音頻,在線用耳機聽的話都是同一個音頻,并沒有實時更新,但是下載下來測試了一下真實的音頻文件確實是實時更新的。試了兩個辦法:

一個是.load()方法重載audio,但是沒效果
第二個是每次重新錄音時,刪掉audio標(biāo)簽,然后錄音完成再重新插入一個新的audio標(biāo)簽,但是也沒有效果

想請教各位有沒有好的解決辦法?

----------------------分割線-------------------------
我怕我講的太繁瑣了有點難理解,如果簡單粗暴的講就是,audio的src用的是同一個鏈接,但是鏈接里面的音樂是動態(tài)改變的,但是網(wǎng)頁上用耳機聽一直都是同一首,怎么解決這個問題?

回答
編輯回答
陌離殤

其實就是緩存啦,audio的內(nèi)容被瀏覽器緩存了。url不改變的情況下,不重新下載,以節(jié)省帶寬。可以加hasc值來解決,你可以給加一個計算屬性來自動添加時間戳,比如:

html:
<audio id="audio" autoplay class="hide" :src="url"></audio>

js:
computed: {
  url() {
    return this.audioUrl + '?' + new Date().getTime();
  }
}
2017年7月28日 19:30
編輯回答
悶騷型

感覺是緩存問題。
既然是用audio的src自動發(fā)送get請求,無法設(shè)置no-cache請求頭,那就用動態(tài)參數(shù)來防止緩存。
比如你鏈接是https://www.aaa.com/bbb/ccc

那就每次需要獲取時候加個不同的參數(shù)就行了,https://www.aaa.com/bbb/ccc?r...
可以隨機數(shù),可以遞增,只要不同就行了。

2017年1月31日 15:23
編輯回答
伴謊

樓上說的對,每次在src后面加個隨機數(shù)就可以了,例如時間戳/sr/tmp/cache_readingcut.wav?t=${new Date().getTime()}

2017年6月4日 02:10
編輯回答
心悲涼

樓上說的都對,也可以考慮直接把這個節(jié)點remove掉,再append進(jìn)去。

2018年4月20日 03:33
編輯回答
話寡

鏈接不變的情況下,緩存了,地址后加時間戳即可

2018年8月4日 13:31