1.使用maven配置打包时自动将css/js文件进行压缩处理
问题:如果你的js文件里存在es6的一些符号比如 ' ` ' 符号,那yuicompressor:compress是不会执行成功的,不支持es6的符号
<plugin>
<!-- YUI Compressor Maven压缩插件 -->
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.3.0</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 读取js,css文件采用UTF-8编码 -->
<encoding>UTF-8</encoding>
<!-- 不显示js可能的错误 -->
<jswarn>false</jswarn>
<!-- 若存在已压缩的文件,会先对比源文件是否有改动 有改动便压缩,无改动就不压缩 -->
<force>false</force>
<!-- 在指定的列号后插入新行 -->
<linebreakpos>-1</linebreakpos>
<!-- 压缩之前先执行聚合文件操作 -->
<preProcessAggregates>true</preProcessAggregates>
<!-- 压缩后保存文件后缀 无后缀 -->
<nosuffix>true</nosuffix>
<!-- 源目录,即需压缩的根目录 -->
<sourceDirectory>src/main/webapp/resource</sourceDirectory>
<!-- 压缩js和css文件 -->
<includes>
<include>**/*.js</include>
<include>**/*.css</include>
</includes>
<!-- 以下目录和文件不会被压缩 -->
<excludes>
<exclude>**/*.min.js</exclude>
<exclude>**/*.min.css</exclude>
</excludes>
</configuration>
</plugin>
2.考虑第一种方法无法压缩ES6的js,可以参考这个方法,使用nginx进行配置
使用nginx配置可能会占用很多CPU,因为nginx会将js文件夹压缩,处理算法需要一定的CPU支持,不过nginx配有缓存,如果已经加载完一个页面,是不会重复加载的.
#开启gzip,减少我们发送的数据量
gzip on;
#32个单位为4k的内存作为压缩结果流缓存
gzip_buffers 32 4K;
#gzip压缩比,可在1~9中设置,1压缩比最小,速度最快,9压缩比最大,速度最慢,消耗CPU
gzip_comp_level 6;
#大于1k后开始压缩
gzip_min_length 100;
#压缩的类型
gzip_types application/javascript text/css text/xml;
#禁用IE6以下的gzip压缩,IE某些版本对gzip的压缩支持很不好
gzip_disable "MSIE [1-6]\.";