<?php
/* 
	load: css, js 静态文件 
	启用 gz压缩、缓存处理、过期处理、文件合并等优化操作
*/
error_reporting(0);

if(extension_loaded('zlib')){
	//检查服务器是否开启了zlib拓展
	ob_start('ob_gzhandler');
}

$gettype = 'js';
$allowed_content_types	=	array('js');
$getfiles	= explode(',', strip_tags($_GET['f']));
$offset = 60 * 60 * 24 * 7; //过期7天

if($gettype=='css'){
	$content_type	=	'text/css';
}elseif($gettype=='js'){
	$content_type	=	'application/x-javascript';
}

header ("content-type: ".$content_type."; charset: utf-8");		//注意修改到你的编码
// header ( "cache-control: must-revalidate" );
header ( "cache-control: max-age=".$offset );
header( "Last-Modified: " . gmdate ( "D, d M Y H:i:s", time () ) . "GMT");
header ( "Pragma: max-age=".$offset );
header ( "Expires:" . gmdate ( "D, d M Y H:i:s", time () + $offset ) . " GMT" );
set_cache_limit($offset);

ob_start("compress");

function compress($buffer) {//去除文件中的注释
	$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
	return $buffer;
}

function set_cache_limit($second=1){
	$second=intval($second); 
	if($second==0) {
		return;
	}
	$etag=time()."||".base64_encode( $_SERVER['REQUEST_URI'] );
	
	if(!isset($_SERVER['HTTP_IF_NONE_MATCH'])){
		header("Etag:$etag",true,200);	
		return;
	}else{
		$id = $_SERVER['HTTP_IF_NONE_MATCH'];
	}

	list( $time , $uri ) = explode ( "||" , $id );

	if($time < (time()-$second))
	{//过期了,发送新tag
		header("Etag:$etag",true,200);
	}else
	{//未过期,发送旧tag
		header("Etag:$id",true,304);	    
		exit(-1);
	}
}

foreach($getfiles as $file){
	$fileType = strtolower( substr($file, strrpos($file, '.') + 1 ) );
	if(in_array($fileType, $allowed_content_types)){
		//包含你的全部css文档
		readfile($file);
	}else{
		echo 'not allowed file type:'.$file;
	}
}
//输出buffer中的内容,即压缩后的css文件
if(extension_loaded('zlib')){
	ob_end_flush();
}