在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管理的项目可使用如下依赖获取架包。

ro.isdc.wro4j

wro4j-core

1.6.2

2.    配置Js、CSS合并策略。新建wro.xml文件,放置在WEB-INF目录下面

即:/src/main/webapp/WEB-INF/wro.xml。以everycoding官网代码为例,配置详情如下:

xsi:schemaLocation="http://www.isdc.ro/wro wro.xsd">

/static/css/front.css

/static/js/jquery.js

/static/js/jquery.paging.min.js

/static/js/front/global.js

/static/js/front/search.js

/static/css/front.css

/static/css/comment/comment.css

/static/plugins/syntaxhighlighter/shCore.css

/static/js/front/coding.js

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

4.    在web.xml中配置wro4j的过滤器,使js、css合并策略生效。代码配置方式如下:

其中,/static/是Everycoding官网放置静态文件的目录,具体配置请参考自身项目

WebResourceOptimizer

ro.isdc.wro.http.WroFilter

debug

true

disableCache

true

WebResourceOptimizer

/static/*

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 见官网

java css js 合并_java Web程序使用wro4j合并、压缩js、css等静态资源相关推荐

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

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

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

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

  3. java怎么加定时器_JAVA WEB程序中添加定时器

    JAVA WEB程序中添加定时器 //这是我的定时器类,用来定时执行某段任务: package com.my.time; import java.text.ParseException; import ...

  4. java设置浏览器缓存_JAVA WEB过滤器设置浏览器缓存

    最近在工作中对一个开源框架进行二次开发,发现在浏览器运行哪些静态资源浏览器是不缓存的,找了好久都没有找到设置的地方,只好自食其力,用Java的过滤器设置过期时间,详情且看代码 public class ...

  5. java 过滤xss脚本_Java Web应用程序的反跨站点脚本(XSS)过滤器

    java 过滤xss脚本 这是为Java Web应用程序编写的一个好简单的反跨站点脚本(XSS)过滤器. 它的基本作用是从请求参数中删除所有可疑字符串,然后将其返回给应用程序. 这是我以前关于该主题的 ...

  6. Java中用JS那些_java web中javascript主要用哪些?

    java web中javascript主要用途是在页面上完成特定按钮的事件功能并且实现前后台交互. JavaScript 是一种跨平台,面向对象的脚本语言.作为一种小巧且轻量级的语言,JavaScri ...

  7. java cropper 上传_java web 网站头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前 ...

  8. java购书管理系统代码_Java Web 网上书店管理系统

    [实例简介] Java Web网上书店 J2EE,内含源代码,数据库. [实例截图] [核心代码] 38e595d4-15a3-4def-bf32-4e3b21d8c473 └── 网上书店 ├── ...

  9. java 利特尔法则_Java Web应用中调优线程池的重要性

    不论你是否关注,Java Web应用都或多或少的使用了线程池来处理请求.线程池的实现细节可能会被忽视,但是有关于线程池的使用和调优迟早是需要了解的.本文主要介绍Java线程池的使用和如何正确的配置线程 ...

最新文章

  1. 【十五分钟Talkshow】fmplan(十五分钟计划)的初步想法
  2. php过滤两个坐标,php判断两个坐标的方位角
  3. mysql存储过程queue_mysql – 在Sequelize中调用输入/输出类型存储过程
  4. 图片底下配的文字叫什么_38岁孙俪越来越有女人味!穿短裙配性感黑丝美腿撩人,短发超美...
  5. VTK:绘图之StackedBar
  6. JAVA定义一个鲜花类_Java作业 题目:16版.情人节送玫瑰花
  7. ~~并查集模板(数据结构)(附题目AcWing 836. 合并集合)
  8. 局域网的分层结构的优点及分层原理
  9. MySQL数据库的导入和导出
  10. 3个维度,帮助IT部门快速完成企业云盘选型!
  11. chainlink2022年春季编程马拉松
  12. codevs 5960 信使x
  13. 鸿蒙系统能把游戏窗口化吗,家里装上华为智慧屏S系列,这三个功能,让我爱不释手!...
  14. ed302安兔兔版main.31.com.antutu.ABenchMark.fix23下载安装使用教程
  15. 毫米波雷达基本原理,多普勒效应技术,你知道多少?
  16. ventoy启动盘 集成多版本系统的启动盘
  17. SQL Sever2012安装错误——Windows Installer错误消息:打开安装日志文件的错误的原因及解决方案
  18. 假期观察:家乡的、身边的真实互联网
  19. neon浮点运算_ARM NEON指令集优化理论与实践
  20. 吉时利DMM6500数字万用表可视化数据,轻松发现测量趋势

热门文章

  1. python识别图片中的物体_python3+opencv3识别图片中的物体并截取的方法
  2. xposed插件微信机器人
  3. SkipGram Model -Formulation
  4. 个人日记—《日俄战争》的故事—20200802
  5. html 左边固定右边自动,css经典布局之左侧固定大小右侧自动适应
  6. 精选文章:人生第一辆车购车八大流程及提车注意事项之最强攻略
  7. 西安大明宫上演“灯光秀” 光影融合讲述唐代风韵
  8. json报错Exception in thread http-bio-8888-exec- java.lang.StackOverflowError
  9. 自从干了IT,我犯过的这些错可以绕地球一圈…
  10. Servlet和JSP入门视频【高清】,32个视频