原理:
- 第一次访问,通过expires设置缓存有效期,通过Last-Modified设置上次修改时间为当前时间
- 然后每次访问的时候通过$_SERVER的HTTP_IF_MODIFIED_SINCE变量判断是否过期,如果未过期,返回304表示扔在缓存有效期内,则不需要重复请求资源,简单的一个小方法可以有效节省带宽。
- 浏览器command+shift+R(Ctrl+F5)则浏览器不会携带HTTP_IF_MODIFIED_SINCE参数,即强制刷新资源
$interval=10; //缓存10秒
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
// HTTP_IF_MODIFIED_SINCE即下面的: Last-Modified,文档缓存时间.
// 缓存时间+时长.
$c_time = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])+$interval;
// 当大于当前时间时, 表示还在缓存中... 释放304
if($c_time > time()){
header('HTTP/1.1 304 Not Modified');
exit();
}
}
header('Cache-Control:max-age='.$interval);
header("Expires: " . gmdate("D, d M Y H:i:s",time()+$interval)." GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
echo ' - <a href="">点击重新载入本页面</a><br />';