传统的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中的配置
# <filter>
# <filter-name>AddHeaderFilter</filter-name>
# <filter-class>
# badqiu.web.filter.AddHeaderFilter
# </filter-class>
# <init-param>
# <param-name>headers</param-name>
# <param-value>Content-Encoding=gzip</param-value>
# </init-param>
# </filter>
#
# <filter-mapping>
# <filter-name>AddHeaderFilter</filter-name>
# <url-pattern>*.gzjs</url-pattern>
# </filter-mapping>
二.相关压缩率数据
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
分享到:
相关推荐
一个页面减少10KB对于一个小网站来说,算不上什么,但对于大型站点来说,累计起来却是一个很大的流量……gzip压缩是一个有效可行的方法,但需要Apache的支持(Apache与IIS共用一个端口解决方法)。 传统的JS压缩(删除...
压缩Nuxt的一个简单的静态资产压缩模块,在构建过程中运行Gzip和Brotli压缩。 这比动态压缩文件要有效得多,特别是对于Brotli压缩而言,这样做会浪费CPU时间进行更大的压缩。 有关在运行时进行压缩的信息,请参见的...
HTTP压缩采用通用的压缩算法如GZIP等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。GZIP是比较常见的一种...
模块不会覆盖render.compressor选项,因此它仅压缩构建静态文件/.nuxt/dist/client/。 安装 $ yarn add nuxt-precompress # or npm install 用法 像往常一样,添加到模块部分,而不是buildModules,因为中间件使用...
IIS7已经启用静态文件压缩(Gzip)但是死活不压缩,查找后发现是II7下MIME类型设置问题 将.js的MIME类型设置为application/javascript 再查看页面,已经启用了Gzip。 不过,几个天后又发现有的js文件被压缩,有的...
Jekyll :: Gzip 在构建时为您的Jekyll... 将gem添加到您的Jekyll应用程序中,当您构建网站时,它将为所有基于文本的文件(HTML,CSS,JavaScript等)生成gzip文件。 是否需要更多压缩? Zlib的gzip压缩功能并未完全
命令行工具,用于使用brotli和gzip压缩静态资源。 安装 npm install bread-compressor-cli -D 用法 用npx调用工具 npx bread-compressor dist 或在package.json中插入脚本 "scripts": { "compress": "bread-...
与最大压缩率下的zlib相比,它产生的输出尺寸更小,通常减小3–8% 压缩方法最适合静态Web内容,即那些不经常更改且会产生大量流量的文件。 这是因为在最高质量下,Zopfli使用的CPU时间是zlib的2至3倍。 可以使用...
支持gzip、deflate压缩 支持分段下载(支持部分,可用迅雷等多线程下载工具) 提供动态解析的接口 最后由于是本人练习所用写的,对HTTP协议的支持还是很不完善的,但是稳定性还是可以的,现在该程序运用在Minecraft...
上载文件之前,请先对其进行gzip压缩。 仅上传新文件或更新文件,以节省时间和带宽。 可以选择从存储桶中删除过时的文件。用法您需要先导出您的AWS凭证,然后才能使用此脚本: export AWS_ACCESS_KEY_ID= < key>...
资源服务器是库和Web应用程序的集合,旨在更有效地将静态资源(例如CSS和JavaScript)包含在Java Web应用程序中。 诸如jQuery版本之类的共享资源包含在Web应用程序中的一个定义良好的版本化URL下,并带有浏览器端...
FlyJSONP是一个JavaScript Library用于实现跨域GET和POST请求服务,支持JSONP,并取得一个JSON响应。这个Library具有易于使用,不复杂,非常小,GZIP压缩之后只有1.13kb,并且没有依赖任何JS框架。
GZIP压缩 在专用端口上进行Prometheus监控 只读容器 通过单页应用处理服务静态内容 HTTP / 2服务器推送 提供环境变量以简化配置 具有JSON支持的可配置记录器 单页申请 当您JavaScript框架中有路由器(例如Angular / ...
对于它上载的每个文件,s3up设置一个远期的到期日期,对内容进行gzip压缩,并通过将文件名和时间戳组合在一起来对文件进行版本控制。 这些操作中的每一个都是可选的,可以通过命令行进行控制。 s3up还可以使用Yahoo...
微型,多合一的压缩器,用于常见的Web文件,当这些静态文件导入时,它们会自动解决JavaScript导入问题。 :megaphone: 社区公告 请在提问,以帮助围绕该项目的社区发展 :heart_suit: 作为CLI 由于存在大量依赖关系...
例如JQuery.min.js(80KB)+ persian-date.min.js(50kb)+ persian-datepicker.min.js(30KB)=>总160KB =>我的项目= gzip后为32KB(请记住,Blazor托管模型使用GZip压缩来处理服务器静态文件) 您可以通过非常轻...
压缩流(静态中间件) 压缩生成的响应 内存缓存 自动自签名SSL / TLS 快取 浏览器缓存不足 强大的浏览器缓存 创建新的元数据中间件(从现有的Server._endStream) 安全 X-XSS保护 内容安全政策 X框架...
一个小型,快速,静态的网站相册。 写在node.js和Svelte中。 TLDR安装安装安装安装 git clone https://github.com/mattsahr/kaboom.gitcd kaboomnpm installnpm linkkaboom initkaboom serve设计目标启动包大小...
22.动态和静态页面都可以进行Gzip压缩 页面大小可成倍变小,降低流量,提高网页浏览速度。 23.生成页面的目录,名称,扩展名随意设置 生成页面的名称和目录也是灵活的。根据需要随意设置。 24.智能翻译模板,...
22.动态和静态页面都可以进行Gzip压缩 页面大小可成倍变小,降低流量,提高网页浏览速度。 23.生成页面的目录,名称,扩展名随意设置 生成页面的名称和目录也是灵活的。根据需要随意设置。 24.智能翻译模板,...