java版的YUI3 combine服务-Combo Handler
2015-11-25 15:31
1101 查看
YUI3中,为了避免js文件过大,各个功能模块是拆分的。它有一个“种子”的概念:先下载一个小的核心的js文件到浏览器端,再通过这个小的js文件去加载其它所需的模块。
这种按需加载虽然解决了单个js过大的问题,但是随之带来另外一个问题:如果一个页面使用了YUI的a、b、c功能,那么浏览器就要向服务器请求a.js、b.js、c.js三个文件,这样增加了浏览器向服务器的沟通次数。
为了解决后面的问题,YUI3又有一个combine的概念,预先下载的那个核心的js,把页面上需要的a、b、c模块合并成一个请求发给服务器,类似这样:http://mydomain.com/conbine?a.js&b.js&c.js。
这要求服务器接收到http://mydomain.com/conbine请求后,将参数取出来,找到对应的a、b、c的js文件,合并成一个js文件,返回给客户端。Combo Handler是Yahoo!开发的一个Apache模块,专门来干这个事情的。
如果只用java的web容器,可以把这项工作委托给servlet:
?
对应的YUI配置为:
?
在servlet代码中,我使用了YUI的yuicompressor来压缩js和css文件,下面是maven配置。
?
其中的Path类只是为了获得web应用物理路径,在是用的时候替换一下即可。
目前已知的缺陷:对于css的按需加载,浏览器会请求客户端两次,目前不清楚是不是YUI3(测试版本:3.7.2)的问题。
具体代码如下:
?
这种按需加载虽然解决了单个js过大的问题,但是随之带来另外一个问题:如果一个页面使用了YUI的a、b、c功能,那么浏览器就要向服务器请求a.js、b.js、c.js三个文件,这样增加了浏览器向服务器的沟通次数。
为了解决后面的问题,YUI3又有一个combine的概念,预先下载的那个核心的js,把页面上需要的a、b、c模块合并成一个请求发给服务器,类似这样:http://mydomain.com/conbine?a.js&b.js&c.js。
这要求服务器接收到http://mydomain.com/conbine请求后,将参数取出来,找到对应的a、b、c的js文件,合并成一个js文件,返回给客户端。Combo Handler是Yahoo!开发的一个Apache模块,专门来干这个事情的。
如果只用java的web容器,可以把这项工作委托给servlet:
?
?
?
目前已知的缺陷:对于css的按需加载,浏览器会请求客户端两次,目前不清楚是不是YUI3(测试版本:3.7.2)的问题。
具体代码如下:
?
相关文章推荐
- UITextView 的简单用法
- 创建一个流畅循环的UIScrollView
- UICollectionView
- EasyUI常用控件禁用方法
- Spark开发指南Spark Programming Guide
- jeasyui datagrid 使用记
- iOS流布局UICollectionView系列六——将布局从平面应用到空间
- NSValue
- #include<queue> STL 用法
- GUI图形用户界面
- android project ant build
- Error:Execution failed for task ‘:Test:dexDebug’.。。。finished with non-zero exit value 1
- 完成端口 GetQueuedCompletionStatus 异常处理
- Access restriction:The type JPEGCodec is not accessible due to restriction on required library
- 5、关于kvc中的setValuesForKeysWithDictionary为model赋值
- iOS开发-UITextField相关
- UISegmentedControl用法详解
- easyui tree 默认选中第一个节点
- CF 559B Equivalent Strings
- Android UI ------ActionBar