服务器使用Gzip压缩数据,加快网络传输,提高页面性能。使用方法也很简单,在web.xml进行过滤器的配置即可,如下所示。
<filter> <filter-name>gzipFilter</filter-name> <filter-class> net.sf.ehcache.constructs.web.filter.GzipFilter </filter-class> </filter> <filter-mapping> <filter-name>gzipFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>gzipFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <filter-mapping> <filter-name>gzipFilter</filter-name> <url-pattern>*.gif</url-pattern> </filter-mapping> <filter-mapping> <filter-name>gzipFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping>
当然,还要引入相关的两个jar包,ehcache-web-2.0.4.jar和ehcache.jar。
使用gzip,首先要设置请求消息头Accept-Encoding为gzip。这样,你将会得到一个响应,根据消息头Content-Encoding为gzip你可以知道,传输过来的数据是经过gzip压缩的。另外,消息头Content-Length会告诉你压缩后的数据长度。
反编译看到GzipFilter.java的doFilter方法如下,有设置Content-Length。
protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws Exception { if ((!(isIncluded(request))) && (acceptsEncoding(request, "gzip")) && (!(response.isCommitted()))) { if (LOG.isDebugEnabled()) { LOG.debug(request.getRequestURL() + ". Writing with gzip compression"); } ByteArrayOutputStream compressed = new ByteArrayOutputStream(); GZIPOutputStream gzout = new GZIPOutputStream(compressed); GenericResponseWrapper wrapper = new GenericResponseWrapper(response, gzout); wrapper.setDisableFlushBuffer(true); chain.doFilter(request, wrapper); wrapper.flush(); gzout.close(); if (response.isCommitted()) { return; } switch (wrapper.getStatus()) { case 204: case 205: case 304: return; } byte[] compressedBytes = compressed.toByteArray(); boolean shouldGzippedBodyBeZero = ResponseUtil.shouldGzippedBodyBeZero(compressedBytes, request); boolean shouldBodyBeZero = ResponseUtil.shouldBodyBeZero(request, wrapper.getStatus()); if ((shouldGzippedBodyBeZero) || (shouldBodyBeZero)) { response.setContentLength(0); return; } ResponseUtil.addGzipHeader(response); if (this.setVaryHeader) { ResponseUtil.addVaryAcceptEncoding(wrapper); } response.setContentLength(compressedBytes.length); response.getOutputStream().write(compressedBytes); } else { if (LOG.isDebugEnabled()) { LOG.debug(request.getRequestURL() + ". Writing without gzip compression because the request does not accept gzip."); } chain.doFilter(request, response); } }
进一步看ResponseUtil.addGzipHeader方法,有设置消息头Content-Encoding为gzip。
public static void addGzipHeader(HttpServletResponse response) throws ResponseHeadersNotModifiableException { response.setHeader("Content-Encoding", "gzip"); boolean containsEncoding = response.containsHeader("Content-Encoding"); if (!(containsEncoding)) throw new ResponseHeadersNotModifiableException("Failure when attempting to set Content-Encoding: gzip"); }
相关推荐
利用JAVASCRIPT即你想那个GZIP压缩与解压缩 最近流行的网络游戏(FLASH)数据传输都是用GZIP进行压缩与解压缩的,在客户端FLASH对与服务器交互的数据进行解压缩,
大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来....
本文介绍了NodeJS服务器实现gzip压缩,分享给大家,具体如下: 在浏览器向服务器请求静态资源时,服务器为了减小在网络传输过程中消耗的流量和时间,都是将静态资源经过压缩后返回给服务器的,实现压缩的算法有 ...
VC6 gzip 压缩解压 测试代码 使用gzip.dll windows2003自带的gzip库,用于网络数据传输的压缩解压,兼容目前所有的网络服务器
本文主要讲述ASP.NET网站开发者,给网站增加GZIP压缩模块,提高网页传输速度,由此增加页面显示速度。 代码采用VS2008开发,使用.net framework2.0,如果你需要用VS2005开发,把文件依次COPY过去即可。 什么是网页...
大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来....
摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, ...
网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度,服务器是否启用GZip压缩等等。
压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。GZIP是比较常见的一种HTTP压缩算法。 压缩测试在部署的IIS 6.0上配置了GZIP压缩,详细的测试...
使用gzip压缩可以减少数据传输大小,加快网页加载速度。很多大站都开启了gzip压缩,不过也有很多网站并没有开启gzip压缩,上次看了一篇文章说开启gzip压缩后对搜索引擎不友好,但从带宽和流量的角度来看,还是有必要...
而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端 缓存规则,这可以大大提高网站的性能。因此,对于部署在Linux服务器...
内置 GZIP 压缩过滤器加快网页传输. 我们租用虚拟主机或者建立自己企业的服务器的时候经常会遇到文件管理的问题, 用 FTP 方式固然方便, 不过总是需要用一个 FTP 终端软件来管理, 而这个工具可以帮你只要有浏览器, ...
摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, ...
利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。 网页...
答案是肯定的,早在HTTP 1.1标准发布的时候,浏览器就已经开始提供了对压缩数据的支持,而且Web服务器也开始支持数据压缩,著名的Apache服务器就提供了gzip压缩功能,IIS 5可以通过外挂实现gzip压缩,IIS 6则内部...
浏览器—请求—-> 声明可以接受 gzip压缩 或 deflate压缩 或compress 或 sdch压缩 从http协议的角度看–请求头 声明 acceopt-encoding: gzip deflate sdch (是指压缩算法,其中sdch是google倡导的一种压缩方式,目前...
如何减少流量,最方便的办法就是用Gzip压缩,这个apache的gzip压缩是靠一个叫做zlib的类库和gzip的模块(mod_gzip.c)完成的,这玩意专门有一帮牛人研究,因为gzip本身就大名鼎鼎的,并且具有高压缩率开源的压缩原理,...
压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。 当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。本文介绍的HTTP压缩方式,采用的是Windows系统设置的...
MP3数据的传输是gzip压缩的,服务器端存了压缩和不压缩的版本。 这个flash还带播放功能,能播放压缩和没有压缩过的mp3。 使用方法见rec.php;支持ie,ff,chrome,safari。 只要5分,超值,其它的都要10分!!
当浏览器支持gzip 格式的时候, 服务器端会传输gzip格式的数据。 从Http 技术细节上讲,就是 http request 头中 有 “Accept-Encoding”, “gzip” ,response 中就有返回头Content-Encoding=gzip 我们现在从浏览器...