减少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 进行压缩以提高网站性能的更多相关文章

  1. CSS开启硬件加速提高网站性能

    国外一篇文章,有点意思,转载过来,准备尝试下~ 中文地址:http://www.cnblogs.com/yzw7489757/ 原文地址:http://blog.teamtreehouse.com/i ...

  2. ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)

    ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...

  3. ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render

    打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...

  4. (转)ASP.NET MVC 4 RC的JS/CSS打包压缩功能

    转自:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是将多 ...

  5. ASP.NET MVC 4 RC的JS/CSS打包压缩功能

    打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...

  6. 【转】ASP.NET MVC 4 RC的JS/CSS打包压缩功能

    原文链接:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是 ...

  7. 用CSS开启硬件加速来提高网站性能

    国外一篇文章,有点意思,转载过来,准备尝试下~ 中文地址:http://www.cnblogs.com/rubylouvre/p/3471490.html 原文地址:http://blog.teamt ...

  8. 用CSS开启硬件加速来提高网站性能(转)

    翻译文章,原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-cs ...

  9. CSS开启硬件加速来提高网站性能

    原文永久链接 CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行. 那我们怎样才可以切换到GPU模式呢, ...

随机推荐

  1. js--script和link中的 integrity 属性

    <link crossorigin="anonymous" integrity="sha256-+hDz/gVbhp24mhOmoIT4Du4F3K5fs9fjjo ...

  2. iOS 内存管理分析

    内存分析 静态分析(Analyze) 不运行程序, 直接检测代码中是否有潜在的内存问题(不一定百分百准确, 仅仅是提供建议) 结合实际情况来分析, 是否真的有内存问题 动态分析(Profile == ...

  3. 从零开始一起学习SLAM | 学习SLAM到底需要学什么?

    SLAM涉及的知识面很广,我简单总结了 “SLAM知识树” 如下所示: (公众号菜单栏回复 “树” 可获得清晰版) 可以看到涉及的知识面还是比较广的.这里放出一张SLAM圈子里喜闻乐见的表达悲喜交加心 ...

  4. Oracle如何查询当前的crs/has自启动状态

    我们知道在某些停机测试场景,是需要人为禁用crs/has的自启动的,防止过程中主机反复重启对数据库集群造成影响. 使用crsctl disable/enable crs命令可以禁用/启用crs的自启动 ...

  5. 前端流程图jsplumb学习笔记

    1.这篇博客很好,另外两个是官网文档 http://www.cnblogs.com/leomYili/p/6346526.html https://jsplumbtoolkit.com/communi ...

  6. html5-output的用法

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  7. La Vie en rose (模拟)

    #include<bits/stdc++.h> using namespace std; ; ; int T, n, m; char str1[maxm], str2[maxn]; int ...

  8. 大数据和hadoop有什么关系?

    本文资料来自百度文库相关文档 Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于 ...

  9. mysql每天弹出窗口检测更新关闭方式...

    右击计算机-->管理-->系统工具-->任务计划程序-->MySQL<如下图>,选中右键删除或者禁用即可... 更新分界线--------------------- ...

  10. C# 自定义承载控件

    例如ToolStripTextBox类,里面的封装就是一个TextBox控件..NET的类库提供了ToolStripComBox和ToolStripProgressBar两个类.这些类都是从ToolS ...