7

HTML ファイル内で HTML5 Audio 要素を使用しています。

多くの方法を試してみましたが、AJAX 経由でオーディオ ファイルを置き換えることができず、同じオーディオ ファイルが返されます。

<div id="audiodiv">
   <audio id="audioelement">
    <source src="test.ogg" type="audio/ogg">
   </audio>
</div>

そこで、古いファイルを上書きする test.ogg という新しいファイルを記録します。jQueryを使って$("#audiodiv").html('') この部分を使って再レンダリングしてみました。次に、 を介して要素を取得document.getElementbyIDし、.play() function.

新しいものによってすでに上書きされている同じ古い test.ogg を返します。

だから私はキャッシュを削除しようとしましたが、それでも同じ問題です。

これが機能する唯一の方法は、キャッシュを削除してブラウザを閉じ、ページを再度呼び出すことです...

どうすればこれを解決できますか?

助けてくれてどうもありがとう。

4

4 に答える 4

4

ファイルの名前を変更せずに更新し続ける場合はExpires、サーバー側で即時 HTTP ヘッダーを応答に追加する必要があります。これを行う方法は、使用しているサーバーによって異なります。一般的なものにはApacheIISが含まれます。

ただし、ブラウザにオーディオをキャッシュさせ、新しいファイルごとに異なる名前を付ける方が簡単で、より良い方法です。

于 2012-10-24T00:29:50.597 に答える
2

次のような JS キャッシュなしのトリックを使用して、同じファイル サーバー側を使用しました。

var audioPlayer =  $('<audio src="/' + mp3FileName + '?noCache=' + Math.floor(Math.random() * 1000000) + '" type="audio/mpeg" autoplay controls></audio>');

Expire、Last-Modified、および Cache-control ヘッダーを設定してもうまくいきませんでしたが、ランダムな数字の文字列を GET 変数として src に追加するとうまくいきました。

于 2016-01-01T03:54:42.363 に答える
2

最も迅速かつ簡単な解決策は、ファイルの名前を変更することです。これで問題は解決します。それ以外の場合は、robertc のソリューションを使用してください。個人的には、ファイル名を変更するだけです。

于 2012-10-24T01:43:34.100 に答える