<?php
/**
* 浏览器缓存
* @param $_SERVER['HTTP_IF_MODIFIED_SINCE'] //检测文档是否被修改过
* @param num $seconds_to_cache //时间数字,用来设置缓存时间 以s秒为单位
*/
$seconds_to_cache = 60*60*24*365*1;//缓存时间
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){//判断网页是否被修改过,如果有该值,则判断缓存时间又是否超过现在时间
$modified_time = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
$now_time = strtotime($modified_time) + $seconds_to_cache;
if(strtotime($modified_time) + $seconds_to_cache > time()) {//如果现在时间没有超过缓存的时间,跳转到304,并从缓存中读取数据
header("HTTP/1.1 304 Not Modified", TRUE, 304);
exit;
}else{//如果超过缓存时间,在header头信息中加入新的缓存信息
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("last-modified:" . gmdate("d M Y H:i:s") . " GMT");
header("Expires: $ts"); header("Pragma: cache");
header("Cache-Control: max-age=$seconds_to_cache");
//以下用来测试是否从缓存中读取数据,如果从缓存中读取数据,count.php中数字应该保持不变,否则每请求一次图片,count.php
//中的数字加1
header("content-type: image/jpg");
echo file_get_contents('a.jpg');//测试图片
$a = file_get_contents('count.php');//计数文件
$a = $a + 1;
file_put_contents('count.php',$a);
}
}else{//如果未设该值,从文件读取并添加相关头信息
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("last-modified:" . gmdate("d M Y H:i:s") . " GMT");
header("Expires: $ts"); header("Pragma: cache");
header("Cache-Control: max-age=$seconds_to_cache");
header("content-type: image/jpg");
echo file_get_contents('a.jpg');
$a = file_get_contents('count.php');
$a = $a + 1;
file_put_contents('count.php',$a);
}
?>
浏览器缓存设置
最新推荐文章于 2024-08-14 22:45:40 发布