前言:
网站项目需要引用外部文件以减小加载流量,而且第一次加载外部资源文件后,其他同域名的页面如果引用相同的地址,可以利用浏览器缓存直接读取本地缓存资源文件,而不需要每个页面都下载相同的外部资源文件。外部资源文件有一些是第三方插件,有一些是自己写的业务功能脚本,项目引用这些外部文件,需要把没有压缩过的第三方插件压缩后再引用,而自己的业务功能脚本,有的做成插件形式,引用一个功能脚本,需要同时引用若干个脚本文件,因此需要把这些脚本文件合并成一个压缩文件再引用,这样可以减少HTTP请求次数,减少这些外部资源文件的加载流量。
为了实现这些目标,自己原来的步骤是:在目标路径新建.min.xxx文件 》 打开提供在线js/css压缩服务的网站,把源码复制进去在线压缩,然后拷贝出来,粘帖到.min.xxx文件, 如果需要合并文件,则把多个文件的源码复制,压缩,粘帖到同一个.min.xxx文件。但是随着项目的进展,功能越来越多,需要引用的文件也越来越多,每次改动一个外部源文件,都要折腾很多精力才能把.min.xxx文件更新好,特别是源文件分布在不同的目录下,为了寻找这些目录也是挺费心的。所以产生了做一个自动化压缩合并的小程序的想法,只要运行这个程序,就能帮我把这些繁琐的重复劳动完成。
简介:
SuMinify_PHP是一个用于压缩或合并网站项目中的js文件或css文件的单文件绿色版PHP程序,和phpinfo.php一样可以方便放到项目中使用。
开发网站项目过程中,js文件经常是分布在各个不同的目录中,如第三方插件、自己写的插件等,一般会把多个Javascript插件压缩后合并到一个文件中供项目引用,以减少http请求次数。
如果手工操作,每次插件改动的时候,都要花费很多精力来压缩和合并文件,有了这个自动化程序,就可以把项目中的外部资源文件根据规则写成一个自动化配置,然后每次改动文件后,只要运行SuMinify程序,就可以根据规则帮你把文件压缩或合并到指定目录,省去了费心费力的体力劳动,提高了工作效率~
特性:
1、单文件绿色版,无外部依赖,方便部署使用
2、支持多个项目快速切换
3、根据规则写好配置文件,能根据配置文件自动从源码路径中读取源码并压缩,输出到到指定的.min压缩文件
4、项目的规则配置文件能放再任意路径中
5、合并不同目录中的多个文件的内容到一个文件中
6、对整个目录进行就地批量压缩,比如目录中有若干文件,则只要填好目录路径,就能自动遍历目录中的文件,并以每个文件名+.min.后缀的格式生成压缩后的文件
7、将整个目录的资源文件进行压缩后,合并到一个指定路径的.min文件中
8、整个目录就地批量压缩的时候,自动忽略.min文件,防止重复压缩
使用:
1. 将SuMinify_PHP_1_5文件复制到您的项目中任意目录(本文件为单文件绿色版,方便使用^_^).
2. 修改配置内容为适合您需要的规则.
3. 运行本文件,生成成功后,就可以查看并使用您的成果了~
帮助:
$config = array( // soui_v3a项目 'soui_v3a' => 'F:OpenOpusSuMinify_PHP_1_5Examplesoui_v3a_config.php', // soui_v3b项目 'soui_v3b' => array( 'js' => array( 'in-place-minify' => array(// 就地压缩js 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptsuperfishsuperfish.js', // 就地生成superfish.min.js文件 array('path' => 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptPages*', 'skips' => array('F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptPagesskip-me1.js', 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptPagesskip-me2.js')), // 整个目录就地压缩,跳过其中2个文件的压缩 ), 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptminjquery.easyui.min.js' => array( array('path' => 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascripteasyuijquery.easyui.min.js', 'minify' => false), // 不用压缩,直接合并 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascripteasyuilocaleeasyui-lang-zh_CN.js', // 压缩后合并 ), 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptminpages.min.js' => array( array('path' => 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptPages*'), // 将目录中所有文件压缩后合并 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileJavascriptjs-prototype-extension.js', // 压缩后合并 'F:OpenOpusSuMinify_PHP_1_5ExampleResfilePluginjquery-audioplayer-1.0jquery-audioPlayer-1.0.js', // 压缩后合并 ) ), 'css' => array( 'in-place-minify' => array(// 就地压缩css 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileCssPages*', // 整个目录就地压缩 ), 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileCssjeasyuiDefaulteasyui.min.css' => array( 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileCssjeasyuiDefaulteasyui.css', // 压缩后合并 array('path' => 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileCssjeasyuiicon.css', 'replaces' => array("'icons/" => "'../Icons/")), // 压缩后替换内容,然后合并 ), 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileCsssuperfishsuperfish.min.css' => array( 'F:OpenOpusSuMinify_PHP_1_5ExampleResfileCsssuperfishsuperfish.css', // 就地压缩 ), ) ), );
运行效果图:
主页:http://git.oschina.net/sutroon/SuMinify_PHP_1_5
源码:https://git.oschina.net/sutroon/SuMinify_PHP_1_5.git