私は数日間この1つで私の頭を掻いてきました。埋め込みサウンドクリップの再生が要求される前に、埋め込みサウンドクリップがブラウザキャッシュにダウンロードされないようにするにはどうすればよいですか?
私はコールトラッキングに関連するクライアント用のWebアプリケーションを構築しています。このシステムの1つの態様は、短時間録音されたボイスメールメッセージを、メッセージの詳細の横にある「再生」ボタンから直接再生できるようにすることである。
私はそのようなサウンドファイルにアクセスしています。
サウンドクリップは、ディレクトリ内のWebルートの外部に保存されていますが、私たちは変更できないと言われています。ファイルをローカルに取得できないので、小さなPHPパススルースクリプトを使用してファイルをWebページに戻します。
サウンドクリップは、指定されたファイルのリンクIDを再生する前に、javascriptを使用してそのIDを取得しています。
function PlaySound(soundobj) {
var thissound=document.getElementById(soundobj);
thissound.Play();
}
ファイルはWebルートの外部からアクセスされ、次のPHPコードでHTMLに渡されます。
$basedir = '/var/spool/asterisk/monitor';
$clip = $_GET['f'];
$file = $basedir.'/'.$clip;
$ext = array_pop(explode ('.', $file));
if(file_exists($file) && $ext != '' && isset($allowed[strToLower($ext)])) {
$type = $allowed[strToLower($ext)];
}
header("Content-type: audio/x-wav");
header("Content-Disposition: filename='{$file}'");
header("Content-Transfer-Encoding: binary");
header('Content-Length: ' . filesize($file));
readfile($file);
exit();
すべてが正常に動作し、クリップが通過し、サウンドクリップがブラウザで再生されます。
問題は、ページが読み込まれたときにすべてのサウンドクリップがキャッシュに読み込まれることで、明らかに少し遅くなっています。私はその結果を一度に25ページしかダウンロードしないようにしましたが、私は実際に利用可能なサウンドクリップへのリンクを持っていて、再生するように選択されたときにダウンロードされるだけです。
すべてのアイデアをいただければ幸いです。
ええと、私はhtml5オーディオルートを最初に使いたいと思っていましたが、IE7とIE8を使って50%+ vistaがあるので、そのオプションはありません。埋め込み要素を挿入するためのDOMの使用についてのあなたの考えは実際にはうまくいくかもしれませんが、私はそれを試してみましょう。 – raynimmo