最近参与的一个项目中附件获取速度缓慢,有时候还会卡死浏览器,百度后发现HTTP压缩技术可以部分解决这个问题

此处记录一下JavaWeb中怎么开启GZIP压缩

定义一个Filter,

检测浏览器是否支持GZIP压缩

boolean flag = false;
String encoding = request.getHeader("Accept-Encoding");
if (encoding.indexOf("gzip")!=-1) {flag = true;
}
return flag;

检测请求的资源类型(此处可以定义一个列表,存储需要进行GZIP压缩的类型。)

自定义一个类(A)继承HttpServletResponseWrapper,重写构造函数、getOutputStream()、getWriter()、flush()方法

自定义一个类(B)继承ServletOutputStream,重写构造函数、close()、flush()、write(此处需要注意方法重载)、reset()、finish()方法

在B中声明GZIPOutputStream类的变量gzipOutputStream,构造函数中实例化变量gzipOutputStream。

public void close() throws IOException {gzipOutputStream.close();
}
public void flush() throws IOException {gzipOutputStream.flush();
}
public void write(byte[] b, int off, int len) throws IOException {gzipOutputStream.write(b, off, len);
}
public void reset() throws IOException {gzipOutputStream = new GZIPOutputStream(out);
}
public void finish() throws IOException {gzipOutputStream.finish();
}
在A中声明B类的变量gzipStream,构造函数中实例化变量gzipStream
private B stream;
private PrintWriter writer;
@Override
public ServletOutputStream getOutputStream() throws IOException {return stream;
}@Override
public PrintWriter getWriter() throws IOException {if (writer == null) {writer = new PrintWriter(new OutputStreamWriter(getOutputStream(), getCharacterEncoding()));}return writer;
}public void flush() throws IOException {if (writer != null) {writer.flush();}stream.finish();
}
在Filter中两个检验都通过后
A a = new A(res);
res.setHeader("Content-Encoding", "gzip");
chain.doFilter(request, a);
a.flush();
如果没有通过校验则
chain.doFilter(request, response);
最后将Filter配置到web.xml中过滤请求即可




												

JavaWeb开启GZIP压缩相关推荐

  1. godaddy php5.ini,Godaddy主机如何开启GZIP压缩 | Godaddy美国主机中文指南

    为什么要开启GZIP压缩呢?原因很简单:使用GZIP压缩技术能让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到 ...

  2. apache开启 gzip 压缩

    apache开启 gzip 压缩 这里我使用的是Apache2.4.17 打开apache安装目录,找到conf目录,用记事本打开httpd.conf 文件. ctrl+f 查找 去掉 #LoadMo ...

  3. Apache开启Gzip压缩,LAMP网页压缩

    源自http://hi.baidu.com/mrlbz/blog/item/69447759beedafc19d82046b.html 我Wordpress的主机为LAMP架构,即Linux+ Apa ...

  4. PHP网站开启gzip压缩,php中开启gzip压缩的2种方法代码

    Gzip网页压缩可以大幅度提升网站访问速度,对于网站在国外的站来说,这是必不可少的一步,提升网页打开速度非常明显,现在我们就系统的来认识一下这个Gzip的庐山真面目. 一.何为GZIP GZIP概念 ...

  5. 服务器端如何开启GZIP压缩功能

    我们知道做好负载均衡对网站的正常运行,用户体验相当重要.在负载均衡中有一个必须要做的事情就是给服务器开启GZIP压缩功能,对用户请求的页面进行压缩处理,以达到节省网络带宽,提高网站速度的作用. GZI ...

  6. Nginx开启Gzip压缩配置详解

    Nginx开启Gzip压缩配置详解 最近生产上发生了一些问题,原先所有的静态资源文件都是经过gzip压缩的,然而这几天突然都没有压缩了,经过一顿排查,发现是Nginx的配置有问题,借此机会详细了解了N ...

  7. linux apache gzip压缩,Linux入门教程:配置Apache开启gzip压缩传输,gzip压缩 LoadModul

    Linux入门教程:配置Apache开启gzip压缩传输,gzip压缩 LoadModul 开启模块 打开httpd.conf后,先将下面两行配置前面的#号去掉,这样apache就会启用这两个模块,其 ...

  8. nginx 开启gzip压缩

    一.背景介绍        历史遗留问题,在项目创建初期前端力量薄弱,网站大部分image.js.css与业务应用存放在一起,未上传到CDN中,最终导致网站访问缓慢,经过排查由于静态资源大量消耗带宽. ...

  9. WordPress网站如何开启Gzip压缩快速传输

    最近无聊都没有使用Gzip压缩,是因为发现开启这个压缩也是有学问的.服务器上设置.WordPress站点上设置还是插件上设置让我有所疑惑.通过几天的研究学习,总结并分享下如何将 WordPress 站 ...

最新文章

  1. 龙果支付 mysql_龙果支付系统搭建与部署
  2. ps cs3中显示任何像素不大于50%选择。选区边将不可见是什么意思
  3. 又论社区风气, 与程序员是干嘛地的.
  4. Springboot-Flowable 快速开发工作流
  5. python保留sqrt_python:quot;因式分解quot;引出的知识盲点
  6. gitlab创建分支上传文件_环境搭建:gitLab平台的搭建和简单使用
  7. 懒人也能变美,AR试妆会让你剁手到停不下来吗?
  8. Java个人财务管理小软件
  9. 用ERStudio生成带注释的SQL,为每个column生成注释
  10. navicat for mysql Mac版 中文免安装
  11. js中的经典题Foo.getName
  12. 从C到C++衔接——浅析两种语言的差别
  13. svn 撤销已经add的文件
  14. 德邦首份上市年报:内部焦虑权衡论与外部攻守道
  15. nginx过滤器模块
  16. 美本计算机专业,2016美国本科计算机cs专业排名
  17. 论文检测前后需要做什么呢
  18. 贪心算法(一)假背包问题,圣诞老人的礼物
  19. OpenGL核心技术之抗锯齿
  20. 【数字图像处理】大作业 基于模式匹配的车牌识别

热门文章

  1. 看牛人如何20分钟被动加114个微信好友!
  2. 热议!放弃985大学副教授教职,北大博士后从政任区长!
  3. c# 小票打印机打条形码_C#调用CODESOFT打印条码标签的关键代码
  4. 学习笔记——数据格式的变更和自定义
  5. 0x0软考|网络工程师经验分享之计算机网络基础
  6. 【openCV边缘检测】用传统方法实现边缘检测(二)色彩空间
  7. EasyExcel简介
  8. Mac上一款强大的影视后期特效合成软件,让您快速方便地创建复杂的特效
  9. 做人脸识别的时候,记住一定要穿上衣服啊!
  10. honeycomb react脚手架-部署~