1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//开启ob,让输出的数据写入缓冲区 ob_start(); //此处是页面的代码 //这里用当前分钟数做测试 echo time()/60|0; //读取ob缓冲区的所有数据 $s=ob_get_contents(); //关闭ob,并清空缓冲区 ob_end_clean(); //生成ETag $ETag=md5($s); //判断客户端请求的ETag是否和当前页面的ETag相同 if( isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) && $_SERVER['HTTP_IF_NONE_MATCH'] == $ETag ){ //如果相同则返回304状态码 header( 'HTTP/1.1 304 Not Modified' ); }else{ //如果不相同则带上新的ETag,并输出页面数据 header( 'ETag:' . $ETag ); echo $s; }; |
1 2 3 4 5 6 7 8 9 10 |
//判断客户端缓存的Last-Modified是否是最新的 if( $_SERVER['HTTP_IF_MODIFIED_SINCE'] >= date( 'Y-m-d H:i:s', strtotime( '-1 minutes' ) ) ){ //如果已经是最新的就直接返回304 header('HTTP/1.1 304 Not Modified'); exit;//结束程序 }; //输出Last-Modified头 header( 'Last-Modified:' . date( 'Y-m-d H:i:s' ) . ' GMT' ); echo 'OK3'; |