我的服务端JS文件合并工具
静态资源合并,老生常谈的话题了,目的就是减少http请求数,至于为什么要减少http请求大家应该都有所了解,这里就不多赘述,近期由于项目需要,自行开发了一个文件合并工具,由于源码在公司研发网络拿不出来,见谅!这里介绍一下工具的开发过程和大概实现思路,第一次发文到首页,请兄弟们多多指点。
最终效果,先睹为快^_^
最终合并后的效果
项目编译时自动合并所有js文件
经过测试:解析488个jsp文件,最终将314个js文件合并为77个,用时在一秒以内,因此打包时不会耗费太长时间。
对现有几个开源合并工具的分析
1、minify:相关介绍
2、nginx_concat_module:相关介绍
设计过程中的一些思考
1)是否所有的文件都需要合并
2)关于压缩
3)关于缓存与版本控制
合并的工作过程
- jsp文件中使用自定义标签配置好需要合并的资源列表(如<focus:static type="text/javascript" src="/script/a.js,/script/b.js,/script/c.js"></focus:static>)
- 项目打包时调用maven插件titan-file-combiner-maven,根据相关配置解析目标路径下的jsp文件,获取所有需要合并的资源相对路径,文件解析工具返回的是一个字符串List,每一条记录中包含需要合并的多个资源的路径,以逗号隔开。
- 遍历上一步返回的List,调用合并工具titan-file-combiner进行合并操作,并将合并后的文件输出到对应的目标路径下,合并后的文件名根据所合并的文件路径经过一定的处理后生成。
- 在合并完成后还可以调用yahoo的YUIcompressor插件进行压缩并输出到项目输出路径。
- 在用户访问相关页面(即某个jsp)时,自定义标签<focus:static>再次调用titan-file-combiner(若之前的解析有遗漏,这里会再次进行合并操作)根据src的内容生成合并后的url(这里的url和第2步中的url是一致的,指向的是合并后的文件路径),然后生成最终的<script>标签最终形成静态的html传送到客户端。
- 页面在通过最终的url来访问合并后的资源。
合并所依赖的资源介绍
部分细节实现
1)对jericho-html-3.2.jar的使用
2)文件合并的实现
3)合并后文件名的生成
4)使用时的参数配置
5)开发过程的调试问题
转载于:https://www.cnblogs.com/gewei/archive/2012/12/16/2820869.html
我的服务端JS文件合并工具相关推荐
- 【2017-05-30】WebForm文件上传。从服务端删除文件
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多
JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多 width="22" height="16" src="htt ...
- 手游虚拟机服务器,手游剑侠情缘虚拟机镜像一键服务端+安卓客户端+远程工具+架设教程...
内容介绍 架设教程: 1.解压资源包到任意盘符. 2.安装VMware14虚拟机(已安装请忽略)下载地址: 3.使用VMware14 打开解压后资源包内的服务端镜像文件"X:\[523pla ...
- 传奇一键端服务器维护,烈焰炫彩传奇最终版一键服务端+启动教程+GM工具
烈焰炫彩传奇最终版一键服务端+启动教程+GM工具 启动教程: 1.解压资源包,将"LYServer1"文件夹放到D盘根目录.D:\LYServer1 2.打开"D:\LY ...
- python中使用socket编程实现带有界面的客户端向服务端发送文件和下载文件
一主界面: **二:发送文件界面:**首先需要开启发送文件服务端(这里需要注意的是每一次发送文件之前都需要开启一次服务端,因为我在这里将每一次发送文件之后就关闭了客户端和服务端之间的连接) 输出相关客 ...
- FLASH 上传控件传输,服务端保存文件
/// <summary>/// FLASH 上传控件传输,服务端保存文件/// </summary>public static uint fileUpload(HttpReq ...
- 天龙八部服务器列表文件,TLBB服务端目录文件作用
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TLBB服务端目录文件作用 \tlbb\Public\Config\ShopTable.txt 元宝商店加东西,最后一行178是卖6级宝石,提供参考 \t ...
- 服务器npc修改,梦幻古龙服务端NPC对话修改工具与教程
-- 黄石镇 铁 Preload("Quest55002.lua") local l_0_0 = {} l_0_0.npc_id = 570 l_0_0.name = GetNpc ...
- 天龙八部一键端提取服务器文件夹,TLBB服务端目录文件作用
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TLBB服务端目录文件作用 \tlbb\Public\Config\ShopTable.txt 元宝商店加东西,最后一行178是卖6级宝石,提供参考 \t ...
最新文章
- 写给我的2015—开启工作新旅程
- JQuery事件绑定,bind与on区别
- linux搭建gitlab
- 虚函数(Virtual Function)与 纯虚函数(Pure Virtual Function)
- Linux系统【二】exec族函数及应用
- spring.shardingsphere.rules.sharding.sharding-algorithms.database_inline.props‘ is not valid
- css一行点点点_如何通过一点点创意使CSS成为不可能
- 服务器 设置 将 Tomcat 注册 到系统服务 及使用方法
- ARG MIN的含义是什么?
- couldn't open file: data/coco.names
- HEVC帧间预测之三——TEncCu::xCheckRDCostMerge2Nx2N函数分析
- 课程作业练习 K均值聚类 python实现(最小误差平方和准则)
- 计算机扫描服务是哪一项,电脑右键没有扫描选项怎么办 方法其实很简单
- [精简]托福核心词汇23
- IAT HOOK、EAT HOOK和Inline Hook
- NFC - PN532复制RFID门禁卡
- 固态硬盘坏了 安装到里面的软件无法卸载也无法安装
- DBA系列-推荐书籍(中文版本)
- C语言_断言函数assert
- python逐行写入文件_Python文件逐行写入