使用ant对JS/CSS 进行压缩以提高网站性能
减少HTTP请求是优化网站速度的一个重要手段, 所以对javascript/css两种文件进行压缩或合并都是非常必要的.
这里介绍利用ANT来自动进行文件合并和压缩.
3.1. javascript文件合并
在开发阶段常常会把javascript文件分成几部分来写, 比如模块式的开发或多人合作, 或者使用一些外部库. 在生产环境下将比较小的文件合并成一个可以减少HTTP请求的次数, 从而达到优化的目的.
这里假设你对ANT有一定了了解, 如果没有可以参考[ANT简单介绍].
Example 1: 例子
比如现在需要把 js 目录下的 1.js 2.js 3.js 4.js 四个文件合并的成 all.js 一个文件, ANT文件可以这样写.
<target name="concatenate">
<concat destfile="all.js">
<fileset dir="js" includes="*.js" />
</concat>
</target>
fileset 中设置目录和 *.js 即可.
当几个js文件后依赖关系的时候, 合并的顺序则会比较重要了, 这里演示比如需要把 1.js 2.js 两个文件按顺序放在合并文件的最前面, 而 3.js 的 4.js 和其他的文件的顺序并不重要的写法:
<property name="core.files" value="1.js, 2.js" />
<target name="concatenate">
<concat destfile="js">
<filelist dir="js" files="${core.files}" />
<fileset dir="js" includes="*.js" excludes="${core.files}" />
</concat>
</target>
这里我们现在filelist里面定义几个需要讲究顺序而必须放在合并最开头的几个文件, 比如一个core文件, 然后在fileset里面把几个文件设为 excludes , 则可保存这几个文件放在最开头.
3.2. 压缩javascript文件
这里使用 Google Closure 来进行压缩, 需要 Java 运行环境. Clocure 并不接收一次压缩多个文件的选项, 所以这里使用 Ant 的 apply 来完成批量压缩.
<target name="minify">
<apply executable="java" parallel="false">
<fileset dir="${js.dir}">
<include name="*.js" />
</fileset>
<arg line="-jar" />
<arg path="${closure-jar}" />
<arg value="--warning_level" />
<arg value="QUIET" />
<arg value="--compilation_level" />
<arg value="SIMPLE_OPTIMIZATIONS" />
<arg value="--js_output_file" />
<targetfile />
<arg value="--js" />
<mapper type="glob" from="*.js" to="${js.dir}/*.min.js" />
</apply>
</target>
如果你用过 Closure 的命令行工具, 那么这里就会觉得比较熟悉了, 其实就和命令行下的管道命令差不多.
这里关键的主要在于 fileset 和 mapper , 前者是类似命名行下的 find 命名,利用文件名匹配来找到需要压缩的文件列表, 然后 mapper 的功能在与利用原文件名来设置输出文件名, 一般行的都是把类型 script.js 命名为 script.min.js 即可.
${closure-jar} 定义的是 Closure 的jar文件路径, 可以从Google Closure Code 下载.
3.3. 压缩CSS文件
这里使用 yuicompressor 来进行CSS文件的压缩, 同样需要 Java 运行环境.
<!-- minify css files -->
<apply executable="java" parallel="false">
<fileset dir="${public.dir}/css">
<include name="*.css" />
<exclude name="*.min.css" />
</fileset>
<arg line="-jar" />
<arg path="${yuicompressor-jar}" />
<arg line="--charset utf-8" />
<arg line="-v" />
<srcfile />
<arg line="-o" />
<mapper type="glob" from="*.css" to="${public.dir}/css/*.min.css" />
<targetfile/>
</apply>
这里和压缩js的结构一样, 只是参数不太相同而已.
${yuicompressor-jar} 可以从 Yahoo Yui 上下载.
使用ant对JS/CSS 进行压缩以提高网站性能的更多相关文章
- CSS开启硬件加速提高网站性能
国外一篇文章,有点意思,转载过来,准备尝试下~ 中文地址:http://www.cnblogs.com/yzw7489757/ 原文地址:http://blog.teamtreehouse.com/i ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)
ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- (转)ASP.NET MVC 4 RC的JS/CSS打包压缩功能
转自:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是将多 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- 【转】ASP.NET MVC 4 RC的JS/CSS打包压缩功能
原文链接:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是 ...
- 用CSS开启硬件加速来提高网站性能
国外一篇文章,有点意思,转载过来,准备尝试下~ 中文地址:http://www.cnblogs.com/rubylouvre/p/3471490.html 原文地址:http://blog.teamt ...
- 用CSS开启硬件加速来提高网站性能(转)
翻译文章,原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-cs ...
- CSS开启硬件加速来提高网站性能
原文永久链接 CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行. 那我们怎样才可以切换到GPU模式呢, ...
随机推荐
- 家庭记账本之微信小程序(一)
记得ppt中说到,可以制作为微信小程序或者是安卓的应用,但是在我了解后觉得小应用有点力不从心,所以还是从微信小程序开始吧,先让我们了解一下主要的东西 1.准备工作 IDE搭建2.知识准备从零开始app ...
- python 判断字符串是否包含子字符串
第一种方法:in string = 'helloworld' if 'world' in string: print 'Exist' else: print 'Not exist' 第二种方法:fin ...
- JAVA8函数式接口
java8 中内置的四大核心函数接口** Consumer<T> :消费型接口* void accept(T t)* Supplier<T> :供给型接口* T get()** ...
- 读写App.config配置文件的方法
我们经常会希望在程序中写入一些配置信息,例如版本号,以及数据库的连接字符串等.你可能知道在WinForm应用程序中可以利用Properties.Settings来进行类似的工作,但这些其实都利用了Ap ...
- [1]windows 内核情景分析---说明
本文说明:这一系列文章(笔记)是在看雪里面下载word文档,现转帖出来,希望更多的人能看到并分享,感谢原作者的分享精神. 说明 本文结合<Windows内核情景分析>(毛德操著).< ...
- 说说html 的<!DOCTYPE>声明&标准模式与兼容模式
我们都知道<!DOCTYPE>声明位于文档的最前面,处于<html>标签之前. <!DOCTYPE>声明不是html标签,它的作用:告知web浏览界面应该使用哪个h ...
- 对象的copy
一般来讲,java中,对象的copy一般是通过Beans.copy(B, A);用来将A对象复制给B对象,包括对象里面的属性和值. 但但但...... 这样做,有一个很严重的问题,那就是:如果把A对象 ...
- [openjudge-搜索]广度优先搜索之鸣人和佐助
题目描述 描述 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢?已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置.地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大蛇丸 ...
- zookeeper开发
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 zookeeper-3.4.11 ZK客户端操作命令: #登 ...
- 理解本真的 REST 架构风格
1. http://kb.cnblogs.com/page/186516/ 2. http://www.infoq.com/cn/articles/rest-introduction 3. http: ...