`
meiyx
  • 浏览: 183669 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

使用GZIP压缩的方式向客户端传输响应数据

阅读更多
1, 工具类:测试客户端是否支持GZIP编码压缩方式 & 获得支持GZIP的PrintWriter对象

package freebsd;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Utilities {
/*
* 测试客户端浏览器是否支持gzip的编码方式
*/
public static boolean isSurpported(HttpServletRequest request)
{
   String encodingString = request.getHeader("Accept-Encoding");
   return (encodingString!=null) && (encodingString.indexOf("gzip")!=-1);
}
/*
* 取得一个压缩的PrintWriter
*/
public static PrintWriter getWriter(HttpServletResponse response) throws IOException
{
   ServletOutputStream sos = response.getOutputStream();
   GZIPOutputStream gzipos = new GZIPOutputStream(sos);
   return new PrintWriter(gzipos);
}

}
2,Servlet类,产生一个长字符串,然后在html页面中请求该servlet:

import freebsd.*;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class ServletGzip
*/
public class ServletGzip extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletGzip() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   doPost(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   response.setContentType("text/html");
   response.setStatus(response.SC_OK);
   PrintWriter out;
   if(Utilities.isSurpported(request))
   {
    out = Utilities.getWriter(response);

   //协议: 通知客户端使用gzip这种压缩方式而不是其它的,如compress
   response.setHeader("Content-Encoding", "gzip");
   }else {
    out = response.getWriter();
   }
  StringBuilder sBuilder = new StringBuilder();
   for(int i=0; i!=5000; ++i)
   {
    sBuilder.append("Printing the long string... ...!");
   }
   out.println(sBuilder);
out.close();
}
}

分享到:
评论

相关推荐

    iOS gzip压缩数据

    gzip格式通常用于HTTP通信中,服务器和客户端可以通过协商决定是否使用gzip压缩,以减少网络传输的数据量。 在iOS应用中,我们经常需要对HTTP请求或响应的数据进行gzip压缩,以降低网络带宽的消耗。ASIHTTPRequest...

    利用JAVASCRIPT即你想那个GZIP压缩与解压缩

    在描述中提到,“最近流行的网络游戏(FLASH)数据传输都是用GZIP进行压缩与解压缩的”,这是因为网络游戏往往需要大量数据交换,如图像、音频和游戏状态等,GZIP压缩可以显著减少这些数据在网络中传输的时间,提高...

    使用libcurl获取经过gzip压缩的网页文件

    对于HTTP协议,libcurl可以设置请求头来告知服务器客户端支持gzip压缩,这样服务器就会返回压缩过的响应数据。在接收数据时,libcurl会自动检测内容编码并进行解压,使得开发者可以像处理未压缩数据一样处理这些内容...

    在传输层上压缩WebService的请求和响应

    在传输层上压缩WebService的请求和响应是提高网络通信效率的一种常见策略,特别是在处理大量数据交换或带宽有限的环境中。这一技术旨在减小通过网络传输的数据量,从而加快数据传输速度,降低服务器负载,并节省网络...

    EhCache开启gzip压缩功能

    除了EhCache的内置功能,还有其他第三方库或框架如OSCache也提供了gzip压缩的支持,它们可能有不同的配置和使用方式,但原理类似,都是在缓存内容返回给客户端前进行压缩。 值得注意的是,虽然gzip压缩在大部分现代...

    Gzip压缩技术以及压缩算法

    在HTTP上下文中,Web服务器可以配置启用Gzip压缩,当客户端(如浏览器)支持Gzip时,服务器会压缩响应内容再发送给客户端,从而减少网络带宽使用,提高页面加载速度。然而,这也会增加服务器的计算负担,因此需要...

    gzip 压缩 三种方法

    在IT行业中,压缩技术是数据传输和存储时不可或缺的一部分,特别是在网络环境中,为了减少带宽消耗和加快网页加载速度,gzip压缩被广泛使用。本文将详细介绍如何在PHP环境中利用gzip进行数据压缩,涵盖两种服务器端...

    Go-Packagegzip是一个中间件为Macaron提供Gzip压缩响应

    在 Web 服务器与客户端之间通信时,Gzip 可以被用来压缩 HTTP 请求和响应的数据,减少网络传输的时间,提升页面加载速度。 接着,我们关注 Macaron。Macaron 是一个用 Go 语言编写的轻量级、模块化的 web 开发框架...

    Gzip压缩.docx

    总之,Gzip压缩是提升Web性能的有效手段,通过压缩HTTP传输的数据,减小带宽使用,加快页面加载速度,为用户提供更流畅的浏览体验。正确配置服务器以支持Gzip压缩,同时关注服务器资源的平衡使用,是每个网站管理员...

    VC6 gzip 压缩解压 测试代码 使用gzip.dll

    服务器响应时,如果返回的数据是gzip压缩的,将在`Content-Encoding`头中设置`gzip`。 在VC6环境下,你还需要考虑错误处理,例如检查`gzopen()`、`gzwrite()`和`gzread()`的返回值,它们可能会返回NULL或负数来表示...

    关于Gzip压缩js文件提高网站运行速度

    在HTTP请求和响应过程中,服务器和客户端可以通过协商决定是否使用Gzip压缩。如果客户端支持Gzip,它会在请求头中包含`Accept-Encoding: gzip`字段,服务器接收到这个请求后,会将资源(如JavaScript文件)用Gzip...

    nginx-1.18.0已开启gzip压缩优化vue项目大小.zip

    启用gzip压缩后,Nginx会在响应发送到客户端之前对内容进行压缩,这显著降低了网络传输的数据量。在Nginx配置中,可以通过在http、server或location块内添加以下指令来开启gzip压缩: ```nginx gzip on; gzip_types...

    Net的Gzip压缩类 compressionmodule ,解决js中文压缩问题

    当浏览器请求一个页面或资源时,如果它支持Gzip压缩(大多数现代浏览器都支持),服务器就会使用`compressionmodule`对响应内容进行Gzip压缩,然后将压缩后的数据发送给客户端。客户端收到数据后,会自动解压并正常...

    php gzip 压缩js或css

    `Gzip`是一种广泛使用的数据压缩算法,通过在服务器端压缩文件后再传输到浏览器,可以显著减少网络带宽的使用,加快网页加载速度。 首先,我们需要理解`Gzip`的工作原理。`Gzip`基于`DEFLATE`算法,它结合了LZ77...

    WebLogic的GZip压缩

    WebLogic的GZip压缩是一种优化技术,用于减少通过网络传输的数据量,特别是在Web应用程序中,可以显著提升网页加载速度和服务器性能。GZip压缩利用了HTTP协议中的Content-Encoding头,服务器在发送响应到客户端...

    行业分类-设备装置-对数据进行压缩序列化以从客户端应用进行传输.zip

    在客户端应用与设备装置间传输数据时,压缩可以显著减少网络带宽的消耗,尤其是在移动网络或者低速网络环境下,数据压缩能显著提升用户体验。 接着,我们来看序列化。序列化是将对象的状态(包括属性和结构)转换...

    windowsphone Gzip 压缩

    在IT行业中,Windows Phone平台虽然已经不再主流,但学习和理解Gzip压缩技术仍然非常重要,因为Gzip是一种广泛应用于网络数据传输的压缩算法,能够有效减少数据传输量,提高网络性能。本文将深入探讨Gzip在Windows ...

    gzip.dll 网页数据压缩解压用

    gzip 函数库为 Web 服务器和客户端提供了数据压缩的功能,从而显著减少了网络带宽的使用,加快了网页加载速度。 **gzip 压缩算法:** gzip 是基于 DEFLATE 压缩算法的,DEFLATE 结合了 LZ77(Lempel-Ziv)算法和...

    实战 Web Service 压缩传输

    例如,基于 XML 的数据交换方式虽然确保了数据的标准化和兼容性,但其冗长的格式导致数据量大增,严重影响了传输速度和系统响应时间。此外,网络延迟、带宽限制等因素也加剧了这一问题,使得用户在使用过程中体验不...

Global site tag (gtag.js) - Google Analytics