Liferay 前端性能调优(4) 打包artifact时候启用yui-compressor

简介:

上一章节我们介绍了,从浏览器向服务器获取资源时候,可以通过Gzip让浏览器拿到的是压缩的资源从而减少网络下载时间,那么我们能否从源头上考虑呢,就是我们从源头(资源本身)让资源尽可能的小。


办法当然是有的,一般资源有css,js,image,我们的思路是,对于css,js,我们用yui-compressor来对其进行压缩,对于image,我们将他们sprite成单个的大图从而减少网络请求次数。


yui-compressor,相信很多人都不陌生,它可以专门来压缩css,js,一般会去除其中的注释,空白行,合并语义相近的行等等,这里就不在赘述了。我们因为构建分发包使用的都是maven,所以我们就用maven的yui-compressor插件来完成这个任务。


具体配置如下

只要在我们的pom文件的<plugins>中加一个<plugin>如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
< plugin >
                                     < groupId >net.alchim31.maven</ groupId >
< artifactId >yuicompressor-maven-plugin</ artifactId >
< version >${yui-compress-version}</ version >
  < executions >
     < execution >                                                < phase >prepare-package</ phase >
       < goals >                                                   < goal >compress</ goal >
       </ goals >
                                                 < configuration >
                                                         < nosuffix >true</ nosuffix >
                                                         < jswarn >false</ jswarn >
                                                 </ configuration >
         </ execution >
    </ executions >
         </ plugin >
  < plugin >
                                 < groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-war-plugin</ artifactId >
                                 < version >${plugin.war.version}</ version >
       < configuration >
                                         < warSourceExcludes >js/**, css/**</ warSourceExcludes >
       </ configuration >
   </ plugin >
</ plugins >


然后我们运行的时候,就会自动看到在编译,单元测试完会执行压缩,最后在打包,因为我们这个yuicompressor-maven-plugin 定义在maven-war-plugin 之前的:

从这里我们可以显著的看出来,大多数js资源文件都有不同程度的压缩。



测试:

那么到真实服务器上去访问这些资源是否还这样呢?我们做个比较:


在压缩前:


在压缩后:


显然,所有请求的资源文件都变小了,速度也提高了。






本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1213128,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
前端开发 JavaScript Java
前端限制打包文件数量
前端限制打包文件数量
183 65
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
58 3
|
2月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
141 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
1月前
|
缓存 前端开发 JavaScript
前端性能调优
前端性能调优
|
1月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
37 3
|
2月前
|
JSON 前端开发 JavaScript
前端模块打包器的深度解析
【10月更文挑战第13天】前端模块打包器的深度解析
|
2月前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
2月前
|
前端开发 JavaScript 开发工具
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
380 0
|
3月前
|
前端开发 开发者
在前端开发中,webpack 作为一个强大的模块打包工具,为我们提供了丰富的功能和扩展性
【9月更文挑战第1天】在前端开发中,Webpack 作为强大的模块打包工具,提供了丰富的功能和扩展性。本文重点介绍 DefinePlugin 插件,详细探讨其原理、功能及实际应用。DefinePlugin 可在编译过程中动态定义全局变量,适用于环境变量配置、动态加载资源、接口地址配置等场景,有助于提升代码质量和开发效率。通过具体配置示例和注意事项,帮助开发者更好地利用此插件优化项目。
88 13
|
3月前
|
Web App开发 前端开发 JavaScript
Web前端项目的跨平台桌面客户端打包方案之——CEF框架
Chromium Embedded Framework (CEF) 是一个基于 Google Chromium 项目的开源 Web 浏览器控件,旨在为第三方应用提供嵌入式浏览器支持。CEF 隔离了底层 Chromium 和 Blink 的复杂性,提供了稳定的产品级 API。它支持 Windows、Linux 和 Mac 平台,不仅限于 C/C++ 接口,还支持多种语言。CEF 功能强大,性能优异,广泛应用于桌面端开发,如 QQ、微信、网易云音乐等。CEF 开源且采用 BSD 授权,商业友好,装机量已超 1 亿。此外,GitHub 项目 CefDetector 可帮助检测电脑中使用 CEF
473 3