首页 > PHP,Javascript,Css,Nginx > 有了minify你可以扔掉代码压缩工具了,支持js和css自动压缩

有了minify你可以扔掉代码压缩工具了,支持js和css自动压缩

一劳永逸神器,使用Minify来优化网站性能。

从刚开始学习前端编程到认识yui compressor,JSMin插件,感觉拥有了这些工具就可以轻轻松松部署代码了,直到最近了解到这样一个神器:Minify,才意识到原来可以比以前更加轻松地写代码了。

Minify 是用PHP5开发的应用,通过遵循一些Yahoo的优化规则来提高网站的性能。它会合并多个CSS或者JavaScript文件,移除一些不必要的空格和注释,进行gzip压缩,并且会设置浏览器的缓存头。Minify 在设计上和Yahoo的 Combo Handler Service非常像,不过Minify可以合并任何你想要合并的JavaScript和CSS文件。

一般情况下,网站速度的瓶颈都在前端,而最关键的就是资源的加载速度,但是大多数浏览器都有单个域名并发请求数限制,所以如果一个页面中存在很多的资源,比如CSS和JavaScript文件,那么明显会降低网站的加载速度,比较好处理方式就是把多个文件通过一个请求来访问,这样既不会影响之前的文件维护,又会减少资源的清楚数量,Minify就是为之而生。下面是一些被Minify采用的 Yahoo! 优化准则:

1、Make Fewer HTTP Requests

2、Add an Expires or a Cache-Control Header

3、Gzip Components

4、Minify JavaScript and CSS

5、Configure ETags

6、Keep Components under 25K


特性:

合并多个CSS或JavaScript文件为一个文件,减少请求数量,并且进行minify处理

使用了多个开源的库,包括 JSMin.php ,Minify CSS,Minify HTML

服务端缓存(fils/APC/Memcache),可以避免不必要的重复处理

当浏览器存在资源的缓存,返回HTTP 304 Not Modified

多个文件合并时,自动生成URI

当开启服务端缓存的时候,在一般的服务器上Minify每秒可以处理几百个并发请求

根据请求头,开启Content-Encoding: gzip。在服务端缓存开启的情况下,Minify提供gzipped 文件速度比Apache’s mod_deflate模块要快。


安装:

下载最新的Minify,然后解压文件到”min” 文件夹(如果不能直接访问,这里提供从google上下载好的文件)

minify-2.1.7.zip

解压后,拷贝 "min" 文件夹到自己网站的DOCUMENT_ROOT下


修改配置文件:

<?php
//默认为false,设置为true后可以开启Web视图获取url
$min_enableBuilder = true;

//Web视图登陆密码,用户名为admin
$min_builderPassword = '123456';

//安装时的根目录,例如/www为网站目录,min目录在/www/min下
$min_documentRoot = $_SERVER['DOCUMENT_ROOT'];

//调试模式
$min_allowDebugFlag = false;

//min程序生成缓存的目录,可以启用更快的APC或memcached或redis
$min_cachePath = '/tmp';

//设置过期时间,单位s。注意:nginx或apache设置过期时间在minify中将失效,以该参数为准
//minify支持url后带上参数设置过期时间,例如:E.g. /min/f=hello.css&123456
$min_serveOptions['maxAge'] = 1800;


php配置还有一项:查看一下php.ini中的zlib.output_compression是否已经关闭,minify必须要求这一项为Off,否则可能会出现冲突。还有,如果你需要更规范的js和css引用地址,例如:

/min/b=css&f=test.css

而不是

/min/?b=css&f=test.css

如果你是Apache,min目录中已经带有的.htaccess已经实现了urlrewrite了,Nginx用户还需要自己编写rewrite规则。

Nginx的rewrite规则如下:

if (!-e $request_filename) {

	rewrite ^/min/([a-z]=.*) /min/index.php?$1 last;
			
}

location /min/{
			
	location ~.*\.php(\/.*)*$
	{
		#fastcgi_pass  unix:/tmp/php-cgi.sock;
		fastcgi_pass  127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi.conf;
			  
	}
}

注意:在server段添加该规则即可,注意,js和css的在客户端的缓存时间无法在nginx中设置,只能在config.php中设置$min_serveOptions['maxAge']项。


测试:

配置好之后访问:http://website/min/builder网址,接着输入你设定的密码,登陆之后即可添加你需要合并的文件,当然单个文件也可以使用Update按钮,查看合成的新的地址,你会发现css或js都已经被压缩好了。

这就是这一工具的强大之处,它不需要你再去手动压缩源码,只需要你按照最简单的方式保留一份完整的源码,它会自动帮你进行压缩,使用缓存后执行效率相当高,配合cdn加速那就更完美了。

本文地址:http://blog.zhengshuiguang.com/php/minify.html

转载随意,但请附上文章地址:-)

标签:javascript minify yui compressor jsmin 压缩 优化

相关文章

评论已关闭