最近研究了一下利用http的Last-Modified缓存机制,可以让浏览器读取缓存文件,
$num = 4; //模拟服务器数据变化,判断浏览器是否需要读取缓存文件
if($num==4) {
if( isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ){
$browserCachedCopyTimestamp = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
if ( ( $browserCachedCopyTimestamp + 3600 ) > time() ) {
header("HTTP/1.1 304");
exit(1);
}
}
}else{
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time())." GMT");
header('Expires: '.gmdate('D, d M Y H:i:s', time() + 3600)." GMT");
header("Cache-Control:max-age=3600");
for( $i=1; $i < 10 ; $i++ ){
echo "$i|";
}
}
上面我测试了可以读取缓存文件但是刚刚在网上看了一下说是
【Last-Modified和ETags请求的http报头一起使用,服务器首先产生Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改,来决定文件是否继续缓存】
为什么要Last-Modified和ETags一起使用啊。搞不懂。