服务器并发太高,服务器资源和带宽资源不足时,请记住伟大的浏览器缓存吧!也许你依然不以为然,觉得提高服务器的吞吐量有很多办法,比如在服务器端做缓存,把页面静态化,等等。但是我相信有一个东西你应该会在意,没错,就是带宽,在意吧?如果能利用好浏览器缓存,将可以降低你的宽带资源,这样不是很好吗。
请大家点评一下这个php浏览器缓存类!!!
public static function browser_http_cache( $type = ‘nocache‘ , $interval =0, $mktime = ‘‘ , $etag = ‘‘ ){ if ( $type == ‘nocache‘ ){ header(‘Expires: -1‘ ); header(‘Pragma: no-cache‘ ); header(‘Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0‘ ); }else { if (isset( $_SERVER[‘HTTP_IF_NONE_MATCH‘]) && $etag && $_SERVER [‘HTTP_IF_NONE_MATCH‘] == $etag ){ header(‘HTTP/1.1 304 Not Modfied‘); }elseif (isset( $_SERVER [ ‘HTTP_IF_MODIFIED_SINCE‘ ]) && $mktime && $_SERVER [‘HTTP_IF_MODIFIED_SINCE‘] == gmdate(‘r‘,$mktime ).‘GMT‘){ header(‘HTTP/1.1 304 Not Modfied‘); }else { if ($mktime){ $gmtime = gmdate(‘r‘,$mktime + $interval).‘GMT‘; header(‘Expires:‘.$gmtime); //本地缓存目录中,文件过期的时间(由服务器指定具体的时间) } if ($type == ‘public‘ ){ //public可以在任何地方缓存 header(‘Cache-Control: public,max-age=‘.$interval ); // max-age内容能够被缓存的时间 }elseif ( $type == ‘private‘ ){ //private只能被浏览器缓存 header(‘Cache-Control: private,max-age=‘.$interval.‘,s-maxage=0‘ ); }elseif ( $type == ‘none‘){ header(‘must-revalidate,proxy-revalidate‘); //告诉浏览器当前页面不进行缓存,每次访问的时间必须从服务器上读取最新的数据 } } if($type=‘cachetime‘){ $cache_time = $interval; //十分钟缓存 $modified_time = @$_SERVER[‘HTTP_IF_MODIFIED_SINCE‘]; if( strtotime($modified_time)+$cache_time > time() ){ header("HTTP/1.1 304 Not Modfied"); exit; } header("Last-Modified: ".gmdate("D, d M Y H:i:s", time() )." GMT"); } $mktime && header( ‘Last-Modified: ‘ . gmdate ( ‘r‘ , $mktime ) . ‘ GMT‘ ); $etag && header( ‘ETag: ‘ . $etag ); } }