传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),可以通过服务器的配置(如apache)为你的js提供压缩传输,或是appfuse中使用的GZipFilter使tomcat也提供这种能力

现在的问题是这种动态的压缩会导致服务器CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)

一.下面描述在tomcat中的应用

1.将prototype.js通过gzip.exe压缩保存成prototype.gzjs 
2.设置header,我编写了一个简单的AddHeadersFilter来将所有以gzjs结尾的文件增加设置header Content-Encoding=gzip 
web.xml中的配置

Java代码  
  1. <filter>
  2. <filter-name>AddHeaderFilter</filter-name>
  3. <filter-class>
  4. badqiu.web.filter.AddHeaderFilter
  5. </filter-class>
  6. <init-param>
  7. <param-name>headers</param-name>
  8. <param-value>Content-Encoding=gzip</param-value>
  9. </init-param>
  10. </filter>
  11. <filter-mapping>
  12. <filter-name>AddHeaderFilter</filter-name>
  13. <url-pattern>*.gzjs</url-pattern>
  14. </filter-mapping>

测试prototype.js是否正常的代码

Java代码  
  1. <html>
  2. <head>
  3. <!-- type="text/javascript"不可少,有些浏览器缺少这个不能运行,具体已经忘记了 -->
  4. <script src="prototype.gzjs" type="text/javascript"></script>
  5. </head>
  6. <body>
  7. <input id="username" name="username" value="badqiu"/><br />
  8. <input id="email" value="badqiu@gmail.com"/>
  9. <script>
  10. <!-- 测试prototype的方法是否正常-->
  11. alert($F('username'))
  12. </script>
  13. </body>
  14. </html>

在Apache httpd中可以直接通过在httpd.conf增加AddEncoding x-gzip .gzjs来映射.gzjs文件的header

二.相关压缩率数据 
1. prototype.js 1.5.0_rc0原始大小56KB,未经任何处理直接使用gzip压缩为12KB,总压缩率79% 
2. 通过js压缩工具压缩过的protytype.js为20KB,使用gzip压缩为10KB,总压缩率为83% 
3. 实际项目中的多个js合并成的文件 439KB,直接通过gzip压缩为85KB,总压缩率81% 
4. 439KB经过js压缩为165KB,再经过gzip压缩为65KB,总压缩率86%

基本上你都可以忽略js压缩工具的压缩率,直接使用gzip压缩

gzip下载地址 http://www.gzip.org 
tomcat的压缩配置示例下载地址: http://www.blogjava.net/Files/badqiu/gziptest.rar

转载于:https://www.cnblogs.com/xiaochao12345/p/3831383.html

JavaScript的gzip静态压缩方法记录相关推荐

  1. nginx 源码安装并开启gzip静态压缩

    前言 Nginx 使用 yum (Centos7) 在线安装方式无法开启 gzip 静态压缩,只能采用源码安装并开启 gzip 静态压缩(gzip_static). 安装下载工具 yum instal ...

  2. IIS 7 启用 gzip 静态压缩 压缩js和css文件

    搞了很久,不如nginx好弄,不知道怎么修改压缩比,也不知道怎么压缩的规则是啥(管理器上没有写),不过反正出来了,一个js文件900多K变成了100多K 1.在web.config文件里面加上: &l ...

  3. 【转】linux服务器的Gzip文件压缩方法

    转自 http://www.dabaoku.com/jiaocheng/fabu/linux/201008016596.shtml Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Lin ...

  4. linux服务器的Gzip文件压缩方法[转]

    一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992 ...

  5. linux服务器的Gzip文件压缩方法

    一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992 ...

  6. 在IIS上启用Gzip压缩 (HTTP压缩)方法

    本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小 ...

  7. apache启用gzip压缩方法

    一.gzip介绍 Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小.这取决于文件中 ...

  8. Gzip的动态压缩和静态压缩详解

    Gzip的压缩分为动态压缩和静态压缩.动态压缩简而言之就是nginx上的资源是以原始文件形式存在的,当返回给浏览器的时候再进行压缩,浏览器收到压缩文件再解压缩.静态压缩就是nginx上的资源不是原始文 ...

  9. 万网m3 windows linux切换,万网M3-linux虚拟主机开启网页Gzip压缩方法

    广信之家给大家分享:万网M3-linux虚拟主机开启网页Gzip压缩方法,万网M3月流量30G,如果我们开启了网页Gzip压缩,不仅能提升网页的访问速度还可为我们节约空间的流量,所以网页Gzip压缩对 ...

最新文章

  1. ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)
  2. python的运行窗口-Python初学——窗口视窗Tkinter
  3. python 预测足球_利用 Python 预测英雄联盟胜负,分析了 5 万多场比赛才得出的数据!...
  4. python3 Crypto使用出现的问题
  5. 文献阅读课10-Neural Relation Extraction for Knowledge Base Enrichment(提取+嵌入+消歧+规范化联合模型,实体已知,仅关系抽取,多词实体)
  6. 使用 ExceptionDispatchInfo 捕捉并重新抛出异常
  7. java编程思想2_《JAVA编程思想2》笔记
  8. tomcat 版本_Tomcat竟然有bug,这我能信?
  9. Security+ 学习笔记5 常见的网络攻击
  10. iBATIS In Action:iBATIS的安装和配置
  11. pandas的离散化,面元划分
  12. 揭秘你不知道的京东管理体系!
  13. 大麦无线路由器改装打印服务器,大麦domywifi DW33D路由器固件openwrt重分区版
  14. CentOS防火墙开启masquerade后即开启包转发功能
  15. sencha touch总结
  16. oracle remap语句格式,impdp 中的remap方式
  17. 计算机所选区域单元格数值,筛选Excel2007单元格区域或表中的数据
  18. 《他是谁》爆火,优酷的成功并非偶然
  19. 7、Chrome插件
  20. Java(老白再次入门) - 多线程

热门文章

  1. OCR文本检测-RRPN
  2. 怎么用excel表做网页搜索工具_你敢相信?Excel居然可以做搜索引擎
  3. deno mysql_从 Node 到 Deno
  4. 现在很多单位有用计算机,为什么到了现在,还有很多的单位在用着xp系统?
  5. Spring Cloud 未来发展方向
  6. 信安精品课:第1章网络信息安全概述精讲笔记
  7. 宝塔面板的ftp无法使用解决
  8. Oracle从零开始3——复杂查询
  9. vc6可编译的 linux 源码,winpcap+vc6编译环境配置,以及获取网络设备列表的源代码...
  10. (一二〇)CALayer的一些特性