我们知道,在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";
 

项目中对模板和js,css文件进行压缩的处理类的更多相关文章

  1. SpringMVC里静态网页不能加载到.js .css文件的问题

    在写SpringMVC项目时候,写的js css文件打不开,网上查了一下,解决办法: 在web.xml里面: <servlet> <servlet-name>dispatche ...

  2. 部署springboot项目时 打包成jar时包中html,js,css文件缺失

    问题 打包出来的jar包里面没有html,js,css文件 解决方案 在pom.xml文件下的build选项中的src/main/resources的目录下 添加配置 <build> &l ...

  3. iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

    iOS之在webView中引入本地html,image,js,css文件的方法   2014-12-08 20:00:16CSDN-sky_2016-点击数:10292     项目需求 最近开发的项 ...

  4. JS&CSS文件请求合并及压缩处理研究(五)

    接上篇.在我们最终调用 @Html.RenderResFile(ResourceType.Script) 或者 @Html.RenderResFile(ResourceType.StyleSheet) ...

  5. ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩

    JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...

  6. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  7. 开箱即用 - Grunt合并和压缩 js,css 文件

    js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...

  8. [文章存档]Azure .net WebAPP的js/css文件过大导致访问慢的解决办法

    https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-qa-j ...

  9. 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度

    使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...

随机推荐

  1. 网络爬虫与搜索引擎优化(SEO)

    一.网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引. ...

  2. Android下ListView的分页(9.6)

    1 http://www.cnblogs.com/noTice520/archive/2012/02/10/2345057.html 2 http://www.92coding.com/blog/in ...

  3. WordPress函数:get_bloginfo()用法详解

    描述 返回你博客的信息,这些信息可以用在任何地方的 PHP 代码中.这个函数,和 bloginfo() 一样,可以用来在模板文件的任何地方显示你博客的信息. 用法 <?php $bloginfo ...

  4. Atitit.dart语言的特性  编译时js语言大总结

    Atitit.dart语言的特性  编译时js语言大总结 1. 原型环境1 1.1. Dart可以编译js3 2. 第二个期待的理由是Dart的语言特性,没有什么特别特性好像,类似java c#一小时 ...

  5. 使用wifi连接eclipse进行android程序调试

    首先手机必须是root过的.能够使用百度一键root工具. 然后,在手机中打开这个终端(terminal)应用,输入例如以下命令:         su         setprop service ...

  6. spark 的一些常用函数 filter,map,flatMap,lookup ,reduce,groupByKey

    定义不带参数也不带返回值的函数(def :定义函数的关键字  printz:方法名称) scala> def printz = print("scala hello")   ...

  7. 使用eclipse开发hbase程序

      一:在eclipse创建一个普通的java项目 二:新建一个文件夹,把hbase需要的jar放进去,我这里把hbase/lib/*.jar 下所有的jar都放进去了,最后发现就用到了下面三个jar ...

  8. hdu 1010 Tempter of the Bone 奇偶剪枝

      如果所给的时间(步数) t 小于最短步数path,那么一定走不到. 若满足t>path.但是如果能在恰好 t 步的时候,走到出口处.那么(t-path)必须是二的倍数. 关于第二种方案的解释 ...

  9. emacs的常用配置备份

    据说有人搞丢了自己的emacs的配置,然后一怒之下抛弃了emacs投身vim,我还是做个emacs配置的备份吧, 虽然我现在也算不上emacs的发烧友. 这里的配置大多是从网上参考的,最多的是下面的链 ...

  10. linux系统寻找僵尸进程

    1. 用top命令来查看服务器当前是否有僵尸进程. 2. 用ps和grep命令寻找僵尸进程 $ ps -A -ostat, pid, ppid, cmd | grep -e '^[Zz]' 命令解释: ...