1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| function proxy_getallheaders() {
foreach($_SERVER as $h=>$v)
if(ereg('HTTP_(.+)',$h,$hp))
$headers[$hp[1]]=$v;
return $headers;
}
function proxy_sendCacheHeaders($lm) {
$flm = date('D, d M Y H:i:s', $lm - date("Z")) . ' GMT';
header("Last-Modified: $flm");
$exp = date('D, d M Y H:i:s', time() + 86400) . ' GMT';
header("Expires: $exp");
header("Cache-Control: cache");
header("Cache-Control: post-check=1, pre-check=1");
header("Pragma: cache");
}
function proxy_serveFile($filename) {
$mimetypes['gif'] = "image/gif";
$mimetypes['jpg'] = "image/jpeg";
$mimetypes['png'] = "image/png";
$mimetypes['pdf'] = "application/pdf";
$lm = filemtime($filename);
//$headers = getallheaders();
$headers = proxy_getallheaders();
if(isset($headers["If-Modified-Since"])) {
$gmt_mtime = date('D, d M Y H:i:s', $lm - date("Z")) . ' GMT';
if ($headers["If-Modified-Since"] == $gmt_mtime) {
header("HTTP/1.1 304 Not Modified");
proxy_sendCacheHeaders($lm);
exit;
}
}
$pi = pathinfo($filename);
$ext = strtolower($pi['extension']);
$mime = $mimetypes[$ext];
$size= filesize($filename);
header("Content-Length: $size");
proxy_sendCacheHeaders($lm);
if($mime) header("Content-Type: $mime");
readfile($filename);
exit;
} |
Partager