项目中对模板和js,css文件进行压缩的处理类
我们知道,在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文件进行压缩的处理类的更多相关文章
- SpringMVC里静态网页不能加载到.js .css文件的问题
在写SpringMVC项目时候,写的js css文件打不开,网上查了一下,解决办法: 在web.xml里面: <servlet> <servlet-name>dispatche ...
- 部署springboot项目时 打包成jar时包中html,js,css文件缺失
问题 打包出来的jar包里面没有html,js,css文件 解决方案 在pom.xml文件下的build选项中的src/main/resources的目录下 添加配置 <build> &l ...
- iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ
iOS之在webView中引入本地html,image,js,css文件的方法 2014-12-08 20:00:16CSDN-sky_2016-点击数:10292 项目需求 最近开发的项 ...
- JS&CSS文件请求合并及压缩处理研究(五)
接上篇.在我们最终调用 @Html.RenderResFile(ResourceType.Script) 或者 @Html.RenderResFile(ResourceType.StyleSheet) ...
- ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩
JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
- 开箱即用 - Grunt合并和压缩 js,css 文件
js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...
- [文章存档]Azure .net WebAPP的js/css文件过大导致访问慢的解决办法
https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-qa-j ...
- 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度
使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...
随机推荐
- vue-router 导航守卫
记住参数或查询的改变并不会触发进入/离开的导航守卫.你可以通过观察 $route 对象来应对这些变化,或使用 beforeRouteUpdate 的组件内守卫. 1.全局守卫 const router ...
- 【转】纯干货:PS高手完全自学宝典(原创文章)
文章版权:Tommy子言 原创 一. 一切从基础开始 强大的PS虽然功能众多,但归纳起来主要有三大功能: 修图——主要包括纯图片的修饰.合成.3D合成等等: 画图——主要是指用PS来绘画.广告插画, ...
- Android下的Handler
coder是没必要重复造轮子的,写博客亦如此.因为工作忙,学的东西比较多,没法自己来写博客.自己想了个思路就是,把别人的技术精华拿过来,从简到难,慢慢学习.最后提炼,得到自己想学的东西即可,等有时间了 ...
- zabbix自动发现监控远程端口
zabbix监控远程服务器端口,simple checks是zabbix用来监控无agent的主机 脚本和模板地址: https://github.com/mikeluwen/tcpmonitor
- zabbix监控xenserver
xenserver是基于redhat的,可以在zabbix官网下载对应的redhat zabbix安装包,直接安装即可 http://repo.zabbix.com/zabbix/3.0/rhel/5 ...
- GO语言使用开源SSH模拟终端
<pre name="code" class="plain">package main import ( "go-ssh/ssh" ...
- Python基础之模块2
如何导入多个模块? import re #单行导入多个模块 '''多行导入多个模块''' import re import sys import os 如何给模块起别名? import my_modu ...
- poj 2762 Going from u to v or from v to u?(强连通、缩点、拓扑)
题意:(理解错了)在一个洞穴中有多个room,要求任意选两个room:u.v,都能保证u.v之间有通路,注意洞穴中的路是有向边.. 分析:强连通子图中的点必然两两之间可以互通,两个强连通子图之间有通路 ...
- Unable to resolve address ' ' service ' ': Name or service not known
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免.欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- 使用Application Loader上传APP流程解读[APP公布]
本文仅仅是提供一个公布流程的总体思路.假设没有公布经验.建议阅读苹果官方公布文档或者Google搜索具体教程. 1.申请开发人员账号:99美金的(须要信用卡支付),详细流程网上有非常多样例.自行搜索. ...