Nginx的gzip指令使用小结

目录
  • 简介
  • 说一段废话
  • 背景
  • 指令介绍
    • gzip
  • gzip_static
  • 易错点提示

简介

GZIP顾名思义,就是将文件压缩传输。图片、视频、大文件不建议使用压缩,压缩需要占用你的服务器资源,压缩完效果也不大。文章出现很多图片的话,我建议使用图床来存放你的图片。文章给大家介绍Nginx的gzip指令。

说一段废话

压缩响应数据有什么作用呢?问的好:从用户体验和IT成本两方面回答这个问题:

  • 用户体验上

网速一定的情况下,传输5MB数据比传输10MB数据的时间快了一半。所以传输数据越小用户加载页面就越快,当然相比较之下体验会更好。

  • IT成本上

对这个场景来说的成本主要是带宽成本, 数据不压缩那么传输这些数据相应的带宽肯定更大,对比之下压缩耗费的CPU资源在带宽费用上不值一提。

所以你有什么理由不用压缩呢?

背景

当然Nginx也提供了gzip的压缩方式可以使用,但是在日常的工作中我发现或多或少在使用上有些问题,有点像:用了但又好像没用的感觉。 这篇就记录一下gzip的使用方式和易错点。

指令介绍

gzip

gzip指令来自 ngx_http_gzip_module 模块,提供的核心能力就是压缩响应数据。

该模块下提供的指令如下:

gzip                on;     # 开启gzip
gzip_comp_level     6;      # 压缩等级:1-9 1:压缩最快/CPU消耗最少/压缩率最低 以次类推
gzip_min_length     1000;   # 小于此大小的数据不压缩(单位字节/byte);数据来源"Content-Length"头
gzip_buffers        32 4k;  # 压缩响应的缓冲区数量和大小(4K 内存页大小取决于平台)
gzip_proxied        any;    # 对代理的请求是否开启压缩
gzip_types text/plain application/xml application/javascript application/x-javascript text/css application/json;    # 哪些类型的数据需要被压缩
gzip_disable     "MSIE [1-5]\.";    # User-Agent 被正则匹配到的不开启压缩
gzip_vary on;               # 当gzip对请求生效时会被添加一个响应头 "Vary: Accept-Encoding"

tips:

  1. gzip 是动态压缩: 每个请求在被响应时都会在gzip逻辑内走一遍
  2. 压缩等级不是越高越好: 压缩到一定程度后就会吃力不讨好, 从js的测试来看性价比最高的级别是 5或6
  3. buffer大小设置最好是和平台的内存页保持一致: getconf PAGE_SIZE
  4. gzip_types不要瞎写: 写压缩率大的(css/js/xml/json/ttf), image图片就不要写了,压缩空间太小,又耗CPU

gzip_static

gzip_stati指令来自 ngx_http_gzip_static_module模块,提供的核心能力是静态/预压缩

该模块提供的指令如下:

gzip_static on|off|always;  # always: 不管客户端是否支持压缩我他妈全部给你压缩之后给你

tips:

  1. 可以复用gzip_module中以下的指令:

gzip_http_version, gzip_proxied, gzip_disable, gzip_vary

  1. gzip_static是静态压缩:意思是你的服务端需要同时存在源文件和使用gzip压缩后的源文件,这时请求的时候会优先吧压缩文件返回,这样就不用再耗费CPU去动态压缩了。(视情况来用,我们没用)
  2. 可以和gzip一同开启,没啥影响,它的优先级高于gzip

易错点提示

在实际的生产环境中架构都比较负载,不像一个单纯的Nginx一样,我配置好了就万事大吉了。

时常会遇到有些网站明明配置了gzip但是展示上看并没有生效,为什么?

此时需要梳理这个请求流程,看看这个请求都经过了哪些地方,比如 你的请求通过三次代理(CDN-->Nginx-->Nginx)那么在其中一层没有配置或者配置错误那么整体的返回数据就是没有被压缩的, 这种情况出现还是比较多的。

(0)

相关推荐

  • 服务器端如何开启GZIP压缩功能(Apache、IIS、Nginx)

    目录 Apache如何开启GZIP功能 IIS如何开启GZIP功能 Nginx如何开启GZIP功能 我们知道做好负载均衡对网站的正常运行,用户体验相当重要.在负载均衡中有一个必须要做的事情就是给服务器开启GZIP压缩功能,对用户请求的页面进行压缩处理,以达到节省网络带宽,提高网站速度的作用. GZIP是若干文件压缩程序的简称,通常指GNU计划的实现,此处的GZIP代表的就是GUN ZIP,这也是HTTP1.1协议定义的两种压缩方法中最常用的一种压缩方法,客户端浏览器大都支持这种压缩格式.接下来,

  • Nginx Gzip模块启用和配置指令详解

    Nginx的gzip模块是内置的,在http中添加如下配置: 复制代码 代码如下: gzip on;gzip_min_length  5k;gzip_buffers     4 16k;gzip_http_version 1.0;gzip_comp_level 3;gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php

  • Nginx使用Gzip算法对报文进行压缩详解

    什么是HTTP压缩 有时候客户端和服务器之间会传输比较大的报文数据,这时候就占用较大的网络带宽和时长.为了节省带宽,加速报文的响应速速,可以将传输的报文数据先进行压缩,然后再进行传输. HTTP支持多种报文压缩算法,下面是一个普通的请求头,从Accept-Encoding字段可以看出支持gzip.deflate和br压缩算法.本文我们重点讲使用Gzip算法对报文进行压缩,比如Gzip来压缩HTML,Javascript, CSS文件,压缩完后能大大减少网络传输的数据量,提高了用户显示网页的速度.

  • 关于Nginx开启gzip的配置的问题

    nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip压缩,该模块是默认基础的,不需要重新编译,直接开启即可. 基本配置 # 开启gzipgzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩gzip_min_length 1k; # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明gzip_comp_level 1; # 进行压缩的文件类型.javascript有多种形

  • nginx开启gzip压缩的完整步骤记录

    目录 前言 一.配置gzip压缩 二.配置详解 三. 重启nginx服务 总结 前言 开启网站gzip压缩,是一个网站最常用的一个增加访问速度的方式,通过压缩静态资源,从而增加网站的访问速度 一.配置gzip压缩 打开nginx的配置文件 修改nginx中的gzip配置 命令 vim /etc/nginx/nginx.conf 运行 二.配置详解 关于gzip配置的详细解释如下 #是否启动gzip压缩,on代表启动,off代表开启 gzip on; #需要压缩的常见静态资源 gzip_types

  • Nginx的gzip指令使用小结

    目录 简介 说一段废话 背景 指令介绍 gzip gzip_static 易错点提示 简介 GZIP顾名思义,就是将文件压缩传输.图片.视频.大文件不建议使用压缩,压缩需要占用你的服务器资源,压缩完效果也不大.文章出现很多图片的话,我建议使用图床来存放你的图片.文章给大家介绍Nginx的gzip指令. 说一段废话 压缩响应数据有什么作用呢?问的好:从用户体验和IT成本两方面回答这个问题: 用户体验上 网速一定的情况下,传输5MB数据比传输10MB数据的时间快了一半.所以传输数据越小用户加载页面就

  • 一篇文章读懂nginx的gzip功能

    目录 前言 语义: 拓扑: 仿真: 验证: gzip_proxied的参数解析: 小结: 总结 前言 HTTP中包体[body]压缩协商对应的头字段为Accept-Encoding/Content-Encoding.对于HTTP包体压缩,Nginx的ngx_http_gzip_module模块提供了动态gzip压缩功能,并且有很精细的控制. 包括: 开启关闭gzip压缩: gzip on|off 对指定类型的文件进行压缩: gzip_types 文件最小压缩阈值: gzip_min_length

  • nginx下gzip配置参数详解

    Nginx自带的有gzip模块 http://wiki.nginx.org/NginxChsHttpGzipModule ,这个模块支持在线实时压缩输出数据流.经过良好的配置优化,可以大幅的提升网站的输出效率. __使用范例__ 复制代码 代码如下: gzip on; gzip_min_length 1000; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain application/xml; 内

  • nginx配置gzip压缩页面

    gzip(GNU-ZIP)是一种压缩技术.经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多.gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析. Nginx的压缩输出有一组gzip压缩指令来实现.相关指令位于http{-.}两个大括号之间. gzip on;该指令用于开启或关闭gzip模块(on/off) gzip_min_length 1k;设置允许压缩的页面最小字节数,页面字节数从header头得c

  • Nginx基于gzip压缩提高访问速度

    一.为什么nginx要使用gzip 1,压缩的作用: 页面使用gzip压缩之后, 页面大小可以压缩到原来的1/7左右, 传输速度和页面打开时间都可以大幅度提高, 有利于用户访问页面体验的提升 2,Nginx实现gzip压缩的原理: 通过ngx_http_gzip_module模块拦截请求, 并对需要做gzip的类型做gzip压缩 3, ngx_http_gzip_module是Nginx默认集成的, 不需要重新编译,直接开启即可 源码:https://github.com/liuhongdi/

  • 利用Nginx的map指令实现页面跳转

    前言 本文主要介绍了利用Nginx中map指令实现页面跳转的方法,有需要的下面来一起学习学习. 实现方法 在 nginx.conf 的 http 域中添加 map 指令规则,这里包含一个 URL 规则映射文件: # 设置301跳转 map $request_uri $new { include /etc/nginx/redirect.map; } map 指令支持引入一个映射文件的方式,这里 redirect.map 文件内容格式如下: ~^/page/mordern-php$ /page/mo

  • Nginx启用GZIP压缩网页传输方法(推荐)

    原理: 浏览器-请求--> 声明可以接受 gzip压缩 或 deflate压缩 或compress 或 sdch压缩 从http协议的角度看–请求头 声明 acceopt-encoding: gzip deflate sdch (是指压缩算法,其中sdch是google倡导的一种压缩方式,目前支持的服务器尚不多) 服务器–>回应-把内容用gzip方式压缩-->发给浏览器 浏览<-–解码gzip-–接收gzip压缩内容-- gzip配置的常用参数 参数 含义 gzip on/off

  • nginx中gzip压缩提升网站速度的实现方法

    为啥使用gzip压缩 开启nginx的gzip压缩,网页中的js,css等静态资源的大小会大大的减少从而节约大量的带宽,提高传输效率,给用户快的体验. nginx实现gzip nginx实现资源压缩的原理是通过默认集成的ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,使用非常简单直接开启,设置选项即可.. gzip生效后的请求头和响应头 Request Headers: Accept-Encoding:gzip,deflate,sdch Response

  • Vue插值、表达式、分隔符、指令知识小结

    最近打算重温一遍vue的知识,正好总结一份笔记. 插值 基本用法 <span>Text:{{text}}</span> <span v-text="text"></span> 这个属于指令 <li data-id="{{id}}"></li> 有时候只需要渲染一次数据,后续数据变化不再关心,可以通过"*"实现 <span>Text:{{*text}}</sp

随机推荐