项目中对模板和js,css文件进行压缩的处理类
2015-10-16 18:33
549 查看
我们知道,在html的页面中,所有空格和换行符其实都会占据一定的空间,即使使用了gzip压缩,在传输过程中依然会浪费用户的流量和我们自己服务器的带宽,此脚本就是为了解决这个问题而诞生的。
请自行下载Google Closure Compiler,和YUIcompressor点此去下载Google Closure Compiler
点此去下载YUIcompressor
将compiler.jar和yuicompressor-2.4.7.jar放在与本脚本相同的目录下即可
代码很简单,没什么好说的。。
enjoy it!
<?php /** * 代码压缩处理 * * 1.压缩模板文件,去掉所有换行和头尾空格 * 2.压缩js和css文件,生成同名.min.js或.min.css文件 * * @author 废墟 <r.anerg#gmail.com> * @version 1.1 * @link http://anerg.com * */ ini_set("memory_limit", -1); ini_set("display_error", 1); error_reporting(E_ALL); date_default_timezone_set('Asia/Shanghai'); define('BASEPATH', dirname(__FILE__)); class Compress_Template { private $input_dir; //模板源目录 private $output_dir; //压缩后的模板目录 public function __construct($type) { $this->input_dir = dirname(BASEPATH) . '/application/views_src/'; $this->output_dir = dirname(BASEPATH) . '/application/views/'; $this->js_dir = dirname(BASEPATH) . '/wwwroot/static/js/'; $this->css_dir = dirname(BASEPATH) . '/wwwroot/static/css/'; } public function run() { exec('rm ' . $this->output_dir . ' -rf'); $this->compress_file($this->input_dir, $this->output_dir); $this->compress_js_css(); } private function compress_js_css() { exec('for JS in $(find ' . $this->js_dir . ' -type f -name "*.js"|grep -v "min.js"); do java -jar compiler.jar --charset=UTF-8 --compilation_level=SIMPLE_OPTIMIZATIONS --js=$JS --js_output_file=${JS%%.js}.min.js; done'); exec('for CSS in $(find ' . $this->css_dir . ' -type f -name "*.css"|grep -v "min.css"); do java -jar yuicompressor-2.4.7.jar --type css --charset utf-8 -o ${CSS%%.css}.min.css $CSS; done'); } private function compress_file($input, $output) { $input = rtrim($input, DIRECTORY_SEPARATOR); $output = rtrim($output, DIRECTORY_SEPARATOR); if (is_dir($input)) { $input .= DIRECTORY_SEPARATOR; $output .= DIRECTORY_SEPARATOR; foreach (glob($input . "*") as $path) { $compress_path = str_replace($input, $output, $path); if (is_dir($path)) { if (!is_dir($compress_path)) { $this->mkpath($compress_path); } $this->compress_file($path, $compress_path); } if (is_file($path)) { $data = array_map("trim", file($path)); file_put_contents($compress_path, join('', $data)); } } } } private function mkpath($path) { return is_dir($path) or ($this->mkpath(dirname($path)) and (mkdir($path, 0777) and chmod($path, 0777))); } } $app = new Compress_Template(); $app->run(); echo "OK!\n";
相关文章推荐
- css3 多列显示属性column
- css filter详解
- JS动态引入js,CSS——动态创建script/link/style标签
- 使用netDxf将ArcGIS空间数据按指定样式导出CAD文件
- CSS实现文字内容不被截断当超出指定长度时该字符串自动整体换到下一行
- 前端CSS颜色代码大全
- dialog里面实现自定义样式单选按钮功
- WPF ComboBox样式
- 怎么用CSS设置div里面的table水平居中
- Css圆角边框
- css如何实现背景透明,文字不透明?
- 解决chrome浏览器CSS字体大小小于12px不起作用的方法
- css hack
- 导航条的制作(css)
- CSS3学习笔记(5)—页面遮罩效果
- css样式表中的样式覆盖顺序
- 详解Qt样式/颜色机制:调色板(QPalette)与样式表(Style Sheets)
- DIV+CSS布局最基本的内容
- css浮动(float)
- css常见知识点