2010-08-18 55 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