java Web程序使用wro4j合并、压缩js、css等静态资源

时间:2023-01-20 10:52:23

在Web项目中,js、css合并压缩,不仅有利于减少Http请求数量、减少宽带资源占用,还能有效的管理各种js、css的引入,使整个项目更加有序。而对于访问用户来说,其更大的好处是增加了页面的打开速度,大大提升了用户体验。

所以,互联网各类网站,会通过各种手段,对静态文件进行合并、压缩,动静分离,使用CDN加速等。以此达到网站访问速度的优化。
everycoding.com官网使用的是Java语言开发。因此使用了Java 方面的第三方Jar:wro4j来压缩Js、CSS。本文主要介绍Java Web程序是如何使用wro4j合并、压缩js、Css等静态资源的。

1.    首先下载wro4j-core.1.6.2.jar,maven管理的项目可使用如下依赖获取架包。

  1. <dependency>
  2. <groupId>ro.isdc.wro4j</groupId>
  3. <artifactId>wro4j-core</artifactId>
  4. <version>1.6.2</version>
  5. </dependency>

2.    配置Js、CSS合并策略。新建wro.xml文件,放置在WEB-INF目录下面
即:/src/main/webapp/WEB-INF/wro.xml。以everycoding官网代码为例,配置详情如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <groups xmlns="http://www.isdc.ro/wro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://www.isdc.ro/wro wro.xsd">
  4. <group name="basic">
  5. <css>/static/css/front.css</css>
  6. <js>/static/js/jquery.js</js>
  7. <js>/static/js/jquery.paging.min.js</js>
  8. <js>/static/js/front/global.js</js>
  9. <js>/static/js/front/search.js</js>
  10. </group>
  11. <group name="custom">
  12. <css>/static/css/front.css</css>
  13. <css>/static/css/comment/comment.css</css>
  14. <css>/static/plugins/syntaxhighlighter/shCore.css</css>
  15. <js>/static/js/front/coding.js</js>
  16. </group>
  17. </groups>

3.    在视图页面引入合并后的js、css.详情可见everycoding.com站点的引入方式

  1. <link href="/static/css/basic.css?minimize=false&v=1433678168807" rel="stylesheet">
  2. <script src="/static/js/basic.js?minimize=false&v=1433524342015"></script>

4.    在web.xml中配置wro4j的过滤器,使js、css合并策略生效。代码配置方式如下:
其中,/static/是Everycoding官网放置静态文件的目录,具体配置请参考自身项目

  1. <filter>
  2. <filter-name>WebResourceOptimizer</filter-name>
  3. <filter-class>
  4. ro.isdc.wro.http.WroFilter
  5. </filter-class>
  6. <init-param>
  7. <param-name>debug</param-name>
  8. <param-value>true</param-value>
  9. </init-param>
  10. <init-param>
  11. <param-name>disableCache</param-name>
  12. <param-value>true</param-value>
  13. </init-param>
  14. <!-- <init-param> <param-name>gzipResources</param-name> <param-value>false</param-value>
  15. </init-param> <init-param> <param-name>cacheUpdatePeriod</param-name> <param-value>1</param-value>
  16. </init-param> <init-param> <param-name>modelUpdatePeriod</param-name> <param-value>1</param-value>
  17. </init-param> <init-param> <param-name>minimizeEnabled</param-name> <param-value>true</param-value>
  18. </init-param> -->
  19. </filter>
  20. <filter-mapping>
  21. <filter-name>WebResourceOptimizer</filter-name>
  22. <url-pattern>/static/*</url-pattern>
  23. </filter-mapping>

5.    Web.xml中配置的wro4j属性Debug的作用
Debug:在开发环境,一般设置为true。生产环境设置为false
那么在开发环境中,将debug设置为true有什么好处呢?
原因是:当debug为false时,视图中引入的js、css都是合并压缩过的代码,尤其是Js,不利于我们开发过程中进行断点调试等工作。
如果,我们想在开发过程中,断点调试Js代码,需要将Debug设置为true。同时,视图引入的js代码部分,需要加上参数:minimize=false。表明:合并,但是不压缩js。
如:/static/js/basic.js?minimize=false
需要注意的时,当debug=false时,这个参数的作用将失效。Js、Css在生成环境一定是压缩的状态。

6.    wro4j相关配置属性详解

属性 认值 描述
debug true true代表开发环境,false代表生成环境
minimizeEnabled true 是否压缩资源
gzipResources true True,则表明response将开启gzip
resourceWatcherUpdatePeriod 0 怎样的频率静态资源更新被监控,0表明不监控。      当监控到资源有更新时,则静态资源的缓存失效。      (since    1.4.8)
resourceWatcherAsync false 对异步更新的静态资源的监控,当属性resourceWatcherUpdatePeriod 配置大于0时,这个值才有意义 (since 1.7.3)
cacheUpdatePeriod 0 怎么样的频率刷新缓存。0表示不刷新静态缓存。
modelUpdatePeriod 0 怎样的频率刷新wro.xml合并压缩策略。0表示不刷新。
header   见官网说明
disableCache false 是否禁用静态资源缓存1.7.6之后的版本已废弃
parallelPreprocessing false 是否开启预处理器并行执行,以提高效率
connectionTimeout 2000 外部资源访问的超时时间,1.4.5版本后有效
managerFactoryClassName N/A 默认BaseWroManagerFactory管理
encoding UTF-8 设置读写编码格式
ignoreMissingResources true 为false时,丢失的资源会引发异常产生。True则会忽略这些异常。
ignoreEmptyGroup true 为false时,空引入链接将失败。True,则忽略。1.4.5之后版本有效。
ignoreFailingProcessor false 为true时,有问题的资源将以原生的方式引入。      1.4.7版本后有效。
cacheGzippedContent false 缓存是否使用gzipped的静态内容. since 1.4.4之后版本有效
jmxEnabled true 是否关闭JMX.
mbeanName wro4j JMX    console 见官网

Wro4j的详细用法可参考:http://code.google.com/p/wro4j/wiki/Installation
如果Java Web项目希望使用动静分离的方式单独部署静态文件,可参考:http://everycoding.com/coding/67.html

java Web程序使用wro4j合并、压缩js、css等静态资源的更多相关文章

  1. springMVC下jsp引用外部js&comma;css等静态资源的解决方法

    直入主题. 1. web.xml对springMVC配置如下: <servlet> <description>Spring MVC配置</description> ...

  2. Web网站配置Gzip,压缩js css文件

    启用apache的gzip 找到httpd.conf,打开文件找到对mod_deflate的注释 #LoadModule deflate_module modules/mod_deflate.so 去 ...

  3. Java Web程序工作原理

    Web开发的最重要的基本功能是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Specitication对于Web Server和 ...

  4. uglifyjs 合并压缩 js&comma; clean-css 合并压缩css

    本文主要介绍如何通过CLI命令行(也就是终端或者cmd打开的那个shell窗口)实现 js和 css 的合并压缩. uglifyjs 合并压缩 js: 1.安装node 这一步就不多说了,下载node ...

  5. 在Java Web程序中使用监听器可以通过以下两种方法

    之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...

  6. 在Java Web程序中使用Hibernate

    在Java Web程序中使用Hibernate与普通Java程序一样.本文中将使用Servlet和JSP结合Hibernate实现数据库表的增删改查操作. Web程序中,hibernate.cfg.x ...

  7. &commat;Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)

    一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得, ...

  8. PHP动态压缩js&comma;css

    PHP动态压缩js,css 列表项 标签: PHP 正式发布产品时,我们希望将项目里的js,css合并压缩,以减少http请求.防止轻易查看源代码. 使用 只需要在头部引入一下代码即可: <me ...

  9. js css等静态文件版本控制&comma;一处配置多处更新&period;net版【原创】

    日常web开发中,我们修改了js.css等静态资源文件后,如果文件名不变的话,客户端浏览并不会及时获取最新的资源文件,这就很尴尬了 怎么办呢? 1.小白:让客户清除缓存?,No ,  不靠谱 2.初级 ...

随机推荐

  1. windows 版的julia repl 启动时间已经大大优化!

    julia 是一门语法类似python 偏向主要用于科学计算的语言,julia吸收了很多其它语言的优点,内置了大量函数,使用起来很方便. 之前windows下的 julia repl(交互解释器)启动 ...

  2. Convert HTML Entities

    function convert(str) { // :) //return str; var HTML_Entities = { '&':'&', '<':'<', '& ...

  3. 理想非常丰满,现实非常骨感——致WiFi通话

    WiFi通话一词,近来火热,国外,iOS 8系统測试版新增WiFi通话功能,英国运营商也着手WiFi免费通话,国内也没落下,阿里发布的170资费方案中就包含WiFi免费通话. 近日,据外媒报道,在美国 ...

  4. IT - 偶像的力量

    [丹尼斯·里奇]C语言,unix之父 [本贾尼·斯特劳斯特卢普]C++之父 [詹姆斯·高斯林 (James Gosling)]Java之父 [林纳斯·托瓦兹(Linus Torvalds)]Linux ...

  5. 【 nginx 】怎么安装nginx

    一,下载地址:http://nginx.org/en/download.html 二,下载完成之后,是一个安装包,解压之后就能直接使用 三,点击进去我们刚刚解压好的nginx的安装包,打开nginx. ...

  6. 12&period;25daily&lowbar;scrum

    今天是圣诞节,大家在度过了一个愉快的节日同时,同时也收到了最好的圣诞礼物,就是调试工作已经进入尾声,接下来我们组的主要任务就是M2阶段的总结了.为了更好的做好M2阶段的收官工作,我们组决定分配相当的一 ...

  7. Linux配置Tomcat步骤mv apache-tomcat-7&period;0&period;82 tomcat

    (一)安装JAVA1.检查java环境 java -version,不存在安装.2.yum -y list java* Loaded plugins: fastestmirror, langpacks ...

  8. NoSQL的CURD结构体的定义

    NoSQL的CURD结构体的定义 flyfish 2015-7-23 參考MongoDB Wire Protocol  在这里document部分使用json表示 使用boost::property_ ...

  9. C&num;颜色 Color&period;FromArgb ColorTranslator 16进制

    //方法1: //引用命名空间 using System.Drawing; 16进制颜色代码转Color类型:ColorTranslator.FromHtml(color); Color类型转16进制 ...

  10. Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache&plus;磁盘DiskLruCache&plus;网络Volley)

    在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价——流量.对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理 ...