tomcat配置前端静态文件gzip压缩

问题背景

在项目部署后,由于网络等原因的限制,导致前端较大的资源文件加载时间特别长,特别是vue相关的项目,较大的js文件更多,这时就可以考虑开启gizp,把较大的文件在传输时进行压缩,提高加载速度,注意tomcat5.0以上才支持gzip。

配置说明

一、tomcat下conf/server.xml文件

找到HTTP/1.1的Connector标签,添加如下配置

<Connector port="8091" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"compression="on"noCompressionUserAgents="gozilla, traviata"compressionMinSize="2048"compressableMimeType="text/html,text/xml,text/javascript,application/javascript,text/css,text/plain,text/json"/>

说明:
1、compression 开启gizp压缩,默认关闭
2、noCompressionUserAgents 对于这两种浏览器不进行压缩,查了很多资料,目前并不知道这两个是什么浏览器,有哪位大佬知道的望留言告知
3、compressionMinSize 大于2KB的文件才进行压缩,对资源压缩时会对服务器消耗一定的cpu性能,对2KB以上的资源才进行压缩是官方给出的建议,实际使用时可以根据自己实际需要在响应时间和cpu性能之间做调整
4、compressableMimeType 配置压缩的文件格式
5、注:图片类型的文件一定不要压缩,大多数图片本身已是压缩文件,无法再使用gzip压缩,如果强行使用,不仅不会压缩文件,反而可能会使文件变大

二、tomcat下conf/web.xml文件

此处配置根据自己实际需求选择是否配置

<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><init-param><param-name>sendfileSize</param-name><param-value>2048</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>

说明:
· sendfileSize 不是用文件压缩直接发送文件的最小大小限制,默认48kb,该配置是使http在发送文件时保证和文件压缩之间有一个权衡
· 文件压缩:可以保证你的带宽,提高资源加载速度
· 发送文件大小限制:可以保证服务器CUP性能
· 如果当前服务端支持sendfile功能,sendfile的配置将优先于压缩,具体表现形式是默认将大于48kb的文件直接发送,即使开启了压缩配置也不会进行压缩
· 如果想压缩较大的文件,需要在此配置发送文件的最小限制,保证该大小以下的文件都会进行压缩

(扩展)Gzip压缩简介

参考:https://blog.csdn.net/happydecai/article/details/81512802

  1. HTTP 协议支持GZIP 压缩机制,也称协议压缩。 HTTP GZIP压缩是由WEB服务器和浏览器共同遵守的协议,也就是说WEB服务器和浏览器都必须遵守。目前主流的服务器和浏览器都支持GZIP压缩技术。包括 IE、FireFox、Opera 等;服务器有 tomcat、Apache 和 IIS 等。
  2. GZIP 主要用来压缩html,css,javascript,等静态文本文件,也支持对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩。
  3. GZIP 压缩的比率通常在3~10 倍之间,这样可以大大节省服务器的网络带宽,大大提升浏览器的浏览速度。
  4. GZIP 是一种数据压缩格式,默认且目前仅使用deflate算法压缩data部分;deflate是一种压缩算法,是huffman编码的一种加强。
  5. 协议压缩就是依据HTTP协议进行压缩,不需要程序员进行压缩,解压编码,而是把压缩过程交给WEB服务器,将解压过程交给客户端。 如果客户端为支持GZIP压缩的浏览器,那么解压过程也不需要程序员参与,浏览器会按照一定的规则自动进行解压缩;如果客户端为HttpClient ,那么就需要手动进行GZIP解码了。
  6. 压缩过程:客户端发送http请求,如果请求头header中携带Accept-Encoding: gzip,deflate (现在的浏览器一般默认都是这样),那么浏览器的意思是:服务器需要进行GZIP压缩,再看响应内容的类型是否满足服务器配置的需要压缩的类型,如果符合,那么WEB服务器在传输响应内容之前,会对响应内容进行压缩,并在响应头中添加Content-Encoding gzip;如果不符合,那么将不压缩,直接返回。
  7. 解压过程:(浏览器)客户端接收到响应,如果响应头中包含Content-Encoding GZIP,那么浏览器会自动将响应内容进行GZIP解压缩,然后再呈现在页面上。如果不包含,那么将直接呈现在页面上。
  8. GZIP的缺点。相对于没有进行GZIP的工程来说,使用GZIP要增加服务器压缩的压力(cpu消耗)、客户端解压缩的压力,故而对服务器的配置需求更高。另外压缩也要耗费时间,想占用更小的空间,得到高压缩比率,肯定要牺牲较长的时间;反之,如果时间较为宝贵,要求快速,那么所得的压缩比率一定较小,当然会占用更大的空间了(压缩比率=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小),这就是物理空间与时间的矛盾。

tomcat配置前端静态文件gzip压缩相关推荐

  1. 【django】配置前端静态文件【6】

    一.将静态⽂件存放⾄项⽬根⽬录下的static⽂件夹中 二.指定静态⽂件加载路径

  2. tomcat访问webapps静态文件报404

    tomcat访问webapps静态文件报404 原因 解决办法 原因 第一次遇到这种情况,tomcat访问webapps下的静态文件访问不了,也没有配置拦截器 查资料说是因为war在tomcat解压的 ...

  3. openresty的html文件夹在,Openresty 配置访问静态文件,拆分路径

    http { server { listen 8080; location / { # default_type text/html; # content_by_lua ' # ngx.say(&qu ...

  4. 解压 *.gz文件 gzip压缩

    压缩文件 gzip file1.txtls -l file1.* -rw-r--r-- 1 root root 134416 Aug 21 08:08 file1.txt.gz 解压文件 gzip - ...

  5. 解压 *.gz文件 gzip压缩

    压缩文件 gzip file1.txtls -l file1.* -rw-r--r-- 1 root root 134416 Aug 21 08:08 file1.txt.gz 解压文件 gzip - ...

  6. Nginx配置服务器静态文件支持跨域访问

    2019独角兽企业重金招聘Python工程师标准>>> 在server中配置 add_header Access-Control-Allow-Origin *;add_header ...

  7. django debug=false后静态文件丢失_python框架Django实战商城项目之工程搭建

    项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...

  8. tomcat中gzip压缩

    在tomcat中压缩文件,修改server.xml文件中的配置 <Connector port="8080" protocol="HTTP/1.1"con ...

  9. Django模板、配置文件、静态文件及案例实现(创建模板、设置模板查找路径、模板接收视图传入的数据、模板处理数据、BASE_DIR、DEBUG、本地语言与时区、App应用配置)

    1.Django模板 网站如何向客户端返回一个漂亮的页面呢? 漂亮的页面需要html.css.js. 可以把这一堆字段串全都写到视图中, 作为HttpResponse()的参数,响应给客户端. 存在的 ...

最新文章

  1. 吴恩达机器学习:神经网络 | 反向传播算法
  2. C++ explicit constructor/copy constructor note
  3. Silverlight教程第三部分:使用 Networking取回数据并填充DataGrid
  4. linux操作系统重启后 解决nginx的pid消失问题
  5. Nginx动静分离-tomcat
  6. 阿里开发者招聘节 | 2019阿里巴巴技术面试题分享:20位专家28道题
  7. 前端学习(2628):node.js中LTS和Current的区别
  8. mysql 升序_mysql 的 查找 与 排序
  9. Github git clone国内mirror加速
  10. 谷歌为何会选用TypeScript?
  11. Oracle二三事之 12c 可插拔数据库PDB
  12. php 转发请求及参数,php – Symfony 2转发请求传递GET / POST参数
  13. fancyhdr宏包设置latex页眉页脚
  14. RTSP视频流直播实现(海康)
  15. 软考嵌入式中级经验分享+真题教材
  16. CodeWarrior IDE烧写介绍
  17. 让你拥有超常记忆力的小习惯
  18. 【Python】爬虫入门级实战讲解:爬取商城的商品名称及价格
  19. 多模态AI浪潮来袭,或造福数亿视障人群
  20. QTableWidgetQTableView表格美化

热门文章

  1. 学习——Regression Tree 回归树
  2. android壁纸 镭光,Blur Wallpaper
  3. 电视android怎么连接手机助手,海信电视微助手怎么帮助手机连接电视机 方法介绍...
  4. 编制程序完成下述任务:接受两个数,一个为用 户一年期定期存款金额,一个为按照百分比格式表示的利率;程序计算一年期满后本金与利息总额。说明:(1)存款金额以人民币元为单位,可能精确到分; (2)输入利率
  5. OpenGL: 位图字体
  6. CVE-2020-0787复现
  7. 力扣leetcode之10.11峰与谷
  8. div+css让div内部元素均匀分布
  9. html如何实现表情加文字发布,vue实现文字表情同时输入的方法
  10. 最好用的17个安全漏洞检查工具