2010-08-18 35 views
1

再次我嘗試阻止窗體緩存從我的網站的MP3文件。我使用的flash播放器,所有文件都是外部公共HTML我使用這個腳本來訪問文件防止歌劇形式chaching mp3

<?php 

$file = $_GET['file'] . '.mp3'; 
$fileDir = '/path/outside/public_html/'; 

if (file_exists($fileDir . $file)) 
{ 
    ob_start(); 

    $contents = file_get_contents($fileDir . $file); 

    echo $contents; 

    $buffer = ob_get_contents(); 

    ob_end_flush(); 

    header('Expires: Mon, 26 Jul 1980 00:00:00 GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); 
    header('Cache-Control: post-check=0, precheck=0', false); 
    header('Pragma: no-cache'); 
    header('Content-type: audio/mpeg'); 

    echo $buffer; 

} ?> 

我的PHP小白所以這個腳本可能是越野車,但它的工作......差不多,我有問題防止Opera中的文件緩存 - 它仍然緩存MP3文件。我看到了一些解決方案:當我從網站播放文件時,文件被下載到緩存中,但在完整下載文件被自動刪除後。沒有時間複製這個文件。所以我的問題是:這是做什麼的?這可能與PHP?

問候和抱歉,我的英語水平

回答

0

這個問題可以通過服務器本身引起,以防止文件緩存嘗試添加一些額外的參數文件名,如:

$file = $_GET['file'] . '.mp3?' . time(); 
+0

謝謝你,但這個不行。我甚至不會有任何錯誤,只是沒有發生。 – Martin 2010-08-19 06:56:32

+0

這需要在URL被加載到瀏覽器中時完成,而不是在代碼已經收到請求並且正在查找文件的時候。 – hallvors 2012-07-31 06:34:56

+0

爲什麼你要這麼做呢?緩存有幾個好處:最終用戶可以獲得更好更快的體驗,服務器可以節省工作,運行速度更快,無需爲這麼多帶寬支付費用,它可以節省全球電力並減少網絡堵塞。你需要打破這個? – hallvors 2012-07-31 06:38:51