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();
}
}
分享到:
相关推荐
gzip格式通常用于HTTP通信中,服务器和客户端可以通过协商决定是否使用gzip压缩,以减少网络传输的数据量。 在iOS应用中,我们经常需要对HTTP请求或响应的数据进行gzip压缩,以降低网络带宽的消耗。ASIHTTPRequest...
在描述中提到,“最近流行的网络游戏(FLASH)数据传输都是用GZIP进行压缩与解压缩的”,这是因为网络游戏往往需要大量数据交换,如图像、音频和游戏状态等,GZIP压缩可以显著减少这些数据在网络中传输的时间,提高...
对于HTTP协议,libcurl可以设置请求头来告知服务器客户端支持gzip压缩,这样服务器就会返回压缩过的响应数据。在接收数据时,libcurl会自动检测内容编码并进行解压,使得开发者可以像处理未压缩数据一样处理这些内容...
在传输层上压缩WebService的请求和响应是提高网络通信效率的一种常见策略,特别是在处理大量数据交换或带宽有限的环境中。这一技术旨在减小通过网络传输的数据量,从而加快数据传输速度,降低服务器负载,并节省网络...
除了EhCache的内置功能,还有其他第三方库或框架如OSCache也提供了gzip压缩的支持,它们可能有不同的配置和使用方式,但原理类似,都是在缓存内容返回给客户端前进行压缩。 值得注意的是,虽然gzip压缩在大部分现代...
在HTTP上下文中,Web服务器可以配置启用Gzip压缩,当客户端(如浏览器)支持Gzip时,服务器会压缩响应内容再发送给客户端,从而减少网络带宽使用,提高页面加载速度。然而,这也会增加服务器的计算负担,因此需要...
在IT行业中,压缩技术是数据传输和存储时不可或缺的一部分,特别是在网络环境中,为了减少带宽消耗和加快网页加载速度,gzip压缩被广泛使用。本文将详细介绍如何在PHP环境中利用gzip进行数据压缩,涵盖两种服务器端...
在 Web 服务器与客户端之间通信时,Gzip 可以被用来压缩 HTTP 请求和响应的数据,减少网络传输的时间,提升页面加载速度。 接着,我们关注 Macaron。Macaron 是一个用 Go 语言编写的轻量级、模块化的 web 开发框架...
总之,Gzip压缩是提升Web性能的有效手段,通过压缩HTTP传输的数据,减小带宽使用,加快页面加载速度,为用户提供更流畅的浏览体验。正确配置服务器以支持Gzip压缩,同时关注服务器资源的平衡使用,是每个网站管理员...
服务器响应时,如果返回的数据是gzip压缩的,将在`Content-Encoding`头中设置`gzip`。 在VC6环境下,你还需要考虑错误处理,例如检查`gzopen()`、`gzwrite()`和`gzread()`的返回值,它们可能会返回NULL或负数来表示...
在HTTP请求和响应过程中,服务器和客户端可以通过协商决定是否使用Gzip压缩。如果客户端支持Gzip,它会在请求头中包含`Accept-Encoding: gzip`字段,服务器接收到这个请求后,会将资源(如JavaScript文件)用Gzip...
启用gzip压缩后,Nginx会在响应发送到客户端之前对内容进行压缩,这显著降低了网络传输的数据量。在Nginx配置中,可以通过在http、server或location块内添加以下指令来开启gzip压缩: ```nginx gzip on; gzip_types...
当浏览器请求一个页面或资源时,如果它支持Gzip压缩(大多数现代浏览器都支持),服务器就会使用`compressionmodule`对响应内容进行Gzip压缩,然后将压缩后的数据发送给客户端。客户端收到数据后,会自动解压并正常...
`Gzip`是一种广泛使用的数据压缩算法,通过在服务器端压缩文件后再传输到浏览器,可以显著减少网络带宽的使用,加快网页加载速度。 首先,我们需要理解`Gzip`的工作原理。`Gzip`基于`DEFLATE`算法,它结合了LZ77...
WebLogic的GZip压缩是一种优化技术,用于减少通过网络传输的数据量,特别是在Web应用程序中,可以显著提升网页加载速度和服务器性能。GZip压缩利用了HTTP协议中的Content-Encoding头,服务器在发送响应到客户端...
在客户端应用与设备装置间传输数据时,压缩可以显著减少网络带宽的消耗,尤其是在移动网络或者低速网络环境下,数据压缩能显著提升用户体验。 接着,我们来看序列化。序列化是将对象的状态(包括属性和结构)转换...
在IT行业中,Windows Phone平台虽然已经不再主流,但学习和理解Gzip压缩技术仍然非常重要,因为Gzip是一种广泛应用于网络数据传输的压缩算法,能够有效减少数据传输量,提高网络性能。本文将深入探讨Gzip在Windows ...
gzip 函数库为 Web 服务器和客户端提供了数据压缩的功能,从而显著减少了网络带宽的使用,加快了网页加载速度。 **gzip 压缩算法:** gzip 是基于 DEFLATE 压缩算法的,DEFLATE 结合了 LZ77(Lempel-Ziv)算法和...
例如,基于 XML 的数据交换方式虽然确保了数据的标准化和兼容性,但其冗长的格式导致数据量大增,严重影响了传输速度和系统响应时间。此外,网络延迟、带宽限制等因素也加剧了这一问题,使得用户在使用过程中体验不...