当前位置: 首页 > Web前端 > CSS

前端性能优化的gzip

时间:2023-03-31 12:57:00 CSS

后台如果你是前端开发者,你一定知道在线环境下js、css、图片等都应该进行压缩,尽量减少文件体积,提高响应速度速度,特别是对于移动终端。重要的。压缩方式前端的压缩方式有很多种。ant工具依赖java,grunt、gulp、webpack由前端打包压缩。这些压缩也很重要,基本可以压缩50%以上。让我们比较下面的压缩文件,如图,这是未压缩的,这是压缩后的高能警告!!!gzip在压缩的基础上可以压缩50%以上!!!gzip压缩的原理但是并不是所有的浏览器都支持gzip。如果知道客户端是否支持gzip,在请求头中有一个Accept-Encoding标识支持压缩。客户端http请求头声明浏览器支持的压缩方式,服务端配置开启压缩,压缩文件类型,压缩方式。当客户端向服务器请求时,服务器解析请求头。如果客户端支持gzip压缩,则将请求的资源压缩后返回给客户端。浏览器以自己的方式解析它。在http响应头中,我们可以看到content-encoding:gzip,表示服务器使用了gzip压缩方式。那么如何查看有没有用gzip压缩过的文件呢?打开f12,检查网络,按照下面的方法过滤content-encoding。如果返回gzip,则表示返回的是gzip。如果客户端支持gzip解析,那么只要服务端能返回gzip文件,就可以启用gzip。下面我们就来说说如何在几种不同的环境下配置node节点。node节点很简单,添加compress模块??即可,代码如下varcompression=require('compression')varapp=express();//尽量使用压缩app.use(compression())在其他中间件之前;这是基本用法,如果你想过滤请求,添加app.use(compression({filter:shouldCompress}))functionshouldCompress(req,res){if(req.headers['x-no-compression']){//这里只是过滤掉包含'x-no-compression'的请求头returnfalse}returncompression.filter(req,res)}更多用法请移步压缩文档如果你使用koa,用法类似对上面的constcompress=require('koa-compress');constapp=module.exports=newKoa();app.use(compress());因为node要读取生成目录下的文件,所以必须先使用其他工具如webpack压缩成gzip,webpack的配置如下,//目标文件名算法:'gzip',//使用gzip压缩test:newRegExp('\\.(js|css)$'//压缩js和css),threshold:10240,//资源文件大于10240B=10kBminRatio:0.8//最小值压缩比达到0.8tomcat的配置如下:找到tomcat的server.xml文件,找到Connector节点,修改配置。具体配置如下"compressionMinSize="2048"noCompressionUserAgents="gozilla,traviata"compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,image/jpeg,application/json"/>参数说明:压缩="on"开启压缩功能compressionMinSize="2048"开启压缩输出内容大小,当压缩对象的大小>=该值时,将进行压缩,默认为2KBnoCompressionUserAgents="gozilla,traviata"以下浏览器,不启用压缩javascript,text/css,text/plain”压缩类型注:tomcat7之后,js文件的mimetype类型变为application/javascript,tomcat7以下为text/javascript;具体tomcat7定义的类型可以在:在conf/web.xml文件中找到可以在web.xml下搜索,如果我搜索javascript,会找到如下代码jsapplication/javascript记住上面的type不能配置错,配置错了,压缩就不行了。nginxgzip使用环境:http,server,location,if(x),一般定义在nginx.conf的http{…..}之间gziponon开启,off关闭gzip_min_length1k设置页面允许压缩的最小字节页面中的字节数是从标头中的Content-Length中获得的。默认为0,无论页面有多大都压缩。建议设置字节数大于1k,小于1k压力可能会增加。gzip_buffers416k使用多少内存来缓存压缩结果,'416k'表示获取gzip_comp_level5gzip压缩比(1~9),以16k*4为单位,压缩效果越小,处理越慢,所以一般取一个中间值;gzip_typestext/plainapplication/x-javascripttext/cssapplication/xmltext/javascriptapplication/x-httpd-php对特定的MIME类型生效,其中‘text/html’是系统强制让gzip_http_version1.1识别http协议的版本,早期的浏览器可能不支持gzip自解压,用户会看到乱码结果数据压缩),expired(启用压缩,如果header头包含"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),no-store(启用压缩,headerheader包含"Cache-Control:no-store"),private(启用压缩,header包含"Cache-Control:private"),no_last_modified(启用压缩,header不包含"Last-Modified"),no_etag(启用压缩,如果标头没有包含“Etag”头),auth(启用压缩,如果头中包含“Authorization”头)gzip_disablemsie6(IE5.5和IE6SP1使用msie6参数禁用gzip压缩)指定哪些浏览器不需要gzip压缩(会匹配User-Agents),依赖PCRE库上面的代码可以插入整个服务器的http{...}配置,也可以插入server{...}或在下面的位置模块中