合并请求
代码
function merge_js_name() {
$args = func_get_args();
sort($args);
return '/js/'.implode('-', $args).'.js';
}
function merge_css_name() {
$args = func_get_args();
sort($args);
return '/css/'.implode('-', $args).'.css';
}
使用
echo merge_js_name('jquery', 'jqueryui');
echo merge_css_name('jquery', 'jqueryui');
合并文件
代码
function merge_file() {
// 别名
static $alias = array(
'js' => array(
'jquery'=>'jquery-1.11.0.min',
),
'css' => array(
'jqueryui'=>'jquery-ui'
),
);
// 获取路径信息
$pathinfo = pathinfo($_SERVER['REQUEST_URI']);
$ext = $pathinfo['extension'];
$alias_list = $alias[$ext];
// 读取文件信息
$files = explode('-', $pathinfo['filename']);
$content = '// '.$pathinfo['filename'].' '.date('Y-m-d H:i:s')."\n\n";
foreach ($files as $file) {
$filename = array_key_exists($file, $alias_list) ? $alias_list[$file] : $file;
$filecontent = file_get_contents("{$_SERVER['DOCUMENT_ROOT']}{$pathinfo['dirname']}/$filename.$ext");
$content .= "// $file.$ext\n$filecontent\n\n";
}
// 写入单独文件
file_put_contents($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], $content);
// 重新访问静态文件
header('Location: '.$_SERVER['REQUEST_URI']);
}
使用
// 使用nginx或apache的文件不存在重定向到合并页面
// 此处模拟nginx或者apache的重定向操作
$_SERVER['REQUEST_URI'] = '/jscss/js/jquery-jqueryui.js';
merge_contents();