Java压缩技术(五) GZIP相关——浏览器解析
来源:互联网 发布:自制图片软件 编辑:程序博客网 时间:2024/06/04 00:38
相关链接:
GZIP本身就是一种网络流压缩算法,而且应用相当广泛。如果网络访问过程中,其数据流较大,势必降低网络访问效率,此时就需要考虑使用压缩!当然,在浏览器与服务器的交互中,要考虑浏览器是否支持这些算法,以及服务器运行压缩所带来的负载。如果你关注浏览器上传的“Accept-Encoding”属性,你就能看明白这一点。
GZIP如何压缩,我这里就不废话了,不清楚的朋友请关注(Java压缩技术(四) GZIP——Java原生实现)
至于如何使得服务器支持gzip的流输出,关键点只有一行代码:
经过这项设置,浏览器就能够很好的作出响应!
先看FireFox,如图:
再看Opera,如图:
浏览器在打开该页面时,就可解压获得并展示其内容!
至于IE就惨了,愣是要求下载! 可能缺少什么设置!(注意后续服务器配置! 不是无解哦!)
你不信就这么简单?上代码!
其实,就这些内容!
当然,除了上述代码方式,针对于tomcat可以通过修改配置获得支持!
说说配置细节:
compression="on" 开启压缩支持
noCompressionUserAgents="gozilla, traviata" 不压缩的内容
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json" 压缩的类型
至于代码,你无需写一行代码!轻松获得服务器访问加速! 并且IE也支持哦!
借网友经验,如下实现,轻松获得IE支持:
Java压缩技术(一) ZLib
Java压缩技术(二) ZIP压缩——Java原生实现
Java压缩技术(三) ZIP解压缩——Java原生实现
Java压缩技术(四) GZIP——Java原生实现
Java压缩技术(五) GZIP相关——浏览器解析
Java压缩技术(六) BZIP2——Commons实现
Java压缩技术(七) TAR——Commons实现
GZIP本身就是一种网络流压缩算法,而且应用相当广泛。如果网络访问过程中,其数据流较大,势必降低网络访问效率,此时就需要考虑使用压缩!当然,在浏览器与服务器的交互中,要考虑浏览器是否支持这些算法,以及服务器运行压缩所带来的负载。如果你关注浏览器上传的“Accept-Encoding”属性,你就能看明白这一点。
GZIP如何压缩,我这里就不废话了,不清楚的朋友请关注(Java压缩技术(四) GZIP——Java原生实现)
至于如何使得服务器支持gzip的流输出,关键点只有一行代码:
- response.setHeader("Content-Encoding", "gzip");
经过这项设置,浏览器就能够很好的作出响应!
先看FireFox,如图:
再看Opera,如图:
浏览器在打开该页面时,就可解压获得并展示其内容!
至于IE就惨了,愣是要求下载! 可能缺少什么设置!(注意后续服务器配置! 不是无解哦!)
你不信就这么简单?上代码!
- /**
- * 2010-4-14
- */
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.zip.GZIPOutputStream;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * GZip服务
- *
- * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
- * @since 1.0
- */
- public class GZipServlet extends HttpServlet {
- private static final long serialVersionUID = -4811926975427533081L;
- private static final String ENCODING = "UTF-8";
- /**
- * 压缩
- *
- * @param data
- * @return
- * @throws Exception
- */
- private byte[] compress(byte[] data) throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // 压缩
- GZIPOutputStream gos = new GZIPOutputStream(baos);
- gos.write(data, 0, data.length);
- gos.finish();
- byte[] output = baos.toByteArray();
- baos.flush();
- baos.close();
- return output;
- }
- /**
- * @param request
- * @param response
- * @throws ServletException
- * @throws IOException
- */
- private void excute(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- byte[] data = "我是一个中国人!".getBytes(ENCODING);
- try {
- byte[] output = compress(data);
- // 设置Content-Encoding,这是关键点!
- response.setHeader("Content-Encoding", "gzip");
- // 设置字符集
- response.setCharacterEncoding(ENCODING);
- // 设定输出流中内容长度
- response.setContentLength(output.length);
- OutputStream out = response.getOutputStream();
- out.write(output);
- out.flush();
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
- * response)
- */
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- excute(request, response);
- }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
- * response)
- */
- protected void doPost(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- excute(request, response);
- }
- }
其实,就这些内容!
当然,除了上述代码方式,针对于tomcat可以通过修改配置获得支持!
- <Connector
- port="8080"
- protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="443"
- URIEncoding="UTF-8"
- compression="on"
- noCompressionUserAgents="gozilla, traviata"
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json"
- />
说说配置细节:
compression="on" 开启压缩支持
noCompressionUserAgents="gozilla, traviata" 不压缩的内容
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json" 压缩的类型
至于代码,你无需写一行代码!轻松获得服务器访问加速! 并且IE也支持哦!
借网友经验,如下实现,轻松获得IE支持:
- response.setContentType("text/plain;charset=utf-8");
阅读全文
0 0
- Java压缩技术(五) GZIP相关——浏览器解析
- Java压缩技术(五) GZIP相关——浏览器解析
- Java压缩技术(五) GZIP相关——浏览器解析
- Java压缩技术(五) GZIP相关——浏览器解析
- Java压缩技术 GZIP
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java压缩技术(四) GZIP——Java原生实现
- Java解压缩技术(二)GZIP压缩-解压缩(
- java中Gzip压缩与解压技术
- Gzip压缩技术
- CSDN第一篇
- MD5加密
- 通过Ajax方式上传文件,使用FormData进行Ajax请求 博客分类: RESTful Web ServicesWeb前端开发
- JAVA String移除空白行
- Linux新手入门:Unable to locate package错误解决办法
- Java压缩技术(五) GZIP相关——浏览器解析
- 注释符号
- get/post 方法的区别
- CSS3 Flexbox轻巧实现元素的水平居中和垂直居中
- 快速入门系列
- Centos7 无法联网以及安装桌面问题的解决
- Android6.0/7.0 获取用户权限(未封装,简单版)
- VS 提示:请考虑使用 app.config 将程序集“XXX”从版本“XX”重新映射到版本“XX”,以解决冲突并消除警告。
- java判断字符串是否为空的方法总结