一、背景
前段时间在使用echarts图标时发现其中的3d图标控件及其的小号资源,网页渲染要十多秒才能完成,所以当时就把网站压缩列为后面需要做的任务之一了。
二、为什么采用网站压缩?
①我们知道,在进行代码编写的时候,为了可阅读性,做了很多格式化的东西(空格、换行、制表符、注释...)但是这些都使得资源文件很多臃肿部分。
②在浏览器解析的时候这些额外的东西是没有用的,而且客户端在下载这些文件时,因为这些无用之处会消耗额外资源,用户体验并不好(例如:网页打开慢...)
③同时这部分操作也会加重我们服务器的负担
三、相关操作
进行网站压缩我们可以使用第三方工具,把我们的js、css、html等进行在线压缩然后替换服务器资源。
但是不好的地方就是每次做更新的时候都要操作一次(webpack就不会,在编译时就已经进行压缩操作了...)
四、具体配置
为了解决这个问题,准备在tomcat服务器上配置gzip压缩。配置如下:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize="37888" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,text/jsp" />
真正起作用的是后面三行:compression定义是否启用gzip压缩,compressionMinSize是定义压缩标准这里设置高于37kb的进行统一压缩,
compressableMimeType定义了压缩类型(只有符合上面格式的才会进行压缩)
五、检测gzip是否起作用
①在网页中打开开发者模式,在响应里面看到Content-Encoding为gzip就表示成功了,如下:
Content-Encoding: gzip
Content-Type: text/html;charset=UTF-8
Date: Tue, 08 Jan 2019 01:54:17 GMT
Transfer-Encoding: chunked
Vary: Accept-Encoding
②另外在站长工具中查询,显示网页已进行压缩也是代表成功了的。