背景: 検索条件に基づいて、オーディオ ファイル (1 ~ 50) を一度にロードするサイトがあります。ユーザーはいつでも検索を調整して、何千ものオーディオ ファイルのライブラリを調べることができます。ページは更新されませんが、AJAX 経由で結果が提供されます。オーディオ タグを preload="auto" に設定することはできません。これは、同時に 50 のオーディオ トラックがロードされ、検索が変化し続け、複数の人が検索している場合、ブラウザがクラッシュするためです。解決策があるので、これは大したことではありません。ただし、解決策は 100% の防弾ではなく、正しい方法で実行すると、オーディオ ファイルの読み込みが完全に行われなくなる可能性があります。
コード: mouseenter でオーディオ ファイルの読み込みを開始するには、次のようにします。
$("#mainSelector").on('mouseenter', '.classOfAudioFiles', function() {
varオーディオ、
strippedId、
$last_played = $('#last_played').val();
strippedId = this.id.substring(15);
audio = $('#audio_'+strippedId).get(0);
if($last_played != 'audio_'+strippedId){
console.log('オーバー');
audio.play();
audio.pause();
audio.addEventListener("canplaythrough", function(){
console.log('準備完了');
}
);
}
});
再生ボタンではなく、ボタンをクリックしてオーディオファイルを再生するには、次のようにします。
$("#mainSelector").on('クリック', '.classOfAudioFiles, .classOfAudioFiles2', function(event) {
//再生中のすべてのオーディオを停止します
$.each($('オーディオ'), 関数 () {
this.pause();
});
//変数
varオーディオ、
$last_played = $('#last_played'),
alreadyPlaying = $('#' + $last_played.val()).get(0),
$hideLastOpened = $last_played.val().substring(6),
stopAllActions、
clickTrackId;
if(this.id.substring(0,15) == 'classOfAudioFiles2'){
clickTrackId = this.id.substring(16);
console.log('タイトル');
}そうしないと{
clickTrackId = this.id
console.log('ボタン');
}
if($('#last_played').val() != 'audio_'+clickingTrackId){
//alert($last_played+' --- audio_'+clickingTrackId);
//最後に開いたものを隠す
$('#playTrack'+$hideLastOpened).hide();
//プラス記号を表示
$('#closePlus'+$hideLastOpened).show();
//既に再生中 = 0;
}
//最後に再生したものを設定
$last_played.val('audio_'+clickingTrackId);
//オーディオを作成
audio = $('#audio_'+clickingTrackId).get(0);
audio.addEventListener("canplaythrough", function(){
console.log('ready2');
}
);
if($hideLastOpened == $('#last_played').val().substring(6)){
$('#last_played').val('audio_1000');
stopAllActions = 1;
}そうしないと{
stopAllActions = 0;
}
if (alreadyPlaying != 未定義 && stopAllActions == 1){
alreadyPlaying.pause();
}そうしないと{
//遅延再生
setTimeout(関数(){
audio.play();
}、250);
}
});
質問: 上記のコードのいずれかで、音声ファイルを 100% の時間再生することを保証する何かが欠けていますか (遅延は 100% ではなくわずかに役立ちました)? これはRAMなどのサーバーの問題ですか?それともクライアント側に依存しているので、サーバーの調整は何もしませんか?