Nginx压缩输出配置

   随着网站内容不断增长,咱们的网站上的内容和功能也变得丰富多彩,这时就会有一个问题出现----咱们的网站加载会明显变慢,这对于网站的访客来讲可不是一件愉快的事,那么咱们该如何优化网站,加快网站的访问速度呢?减小网站的文件内容是不可能了,但咱们能够用一种“魔法”把这些文件变小,下面咱们便来认识一下这个奇妙的缩小术-----gzip。javascript

   gzip(GNU-ZIP)是一种压缩技术,通过它的压缩,页面大小会缩小到一种可观的比例,它的原理就是在服务器端进行压缩,当压缩后的数据包到达用户端的浏览器时,会进行解压,还原出原来的内容,压缩过程,用户在访问网站时并不会感受到。因此gzip的压缩须要浏览器和服务器双方面的支持。不过不须要咱们担忧,由于IE、火狐、Opera、谷歌等绝大多数浏览器都支持解析gzip过的页面。css

   Nginx的压缩输出由一组gzip压缩指令来实现。gzip压缩输出的相关指令位于http{......}两个大括号之间:html

gzip on;java

gzip_min_length 1k;后端

gzip_buffers 4 16k;浏览器

gzip_http_version 1.1;缓存

gzip_comp_level 2;服务器

gzip_types text/plain application/x-javascript text/css application/xml;app

   指令含义:ide

  1. gzip指令:

    语法:gzip on|off

    默认值:gzip off

    指令用于开启或关闭gzip模块。

  2. gzip_buffers指令:

    语法:gzip_buffers number size

    默认值:gzip_buffer 4 4k/8k

    设置系统获取几个单位的缓存用户存储gzip的压缩结果数据流。例如4 4k表明以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。4 8k表明以8k为单位,按照原始数据以8k为单位的4倍申请内存。

    若是没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。

  3. gzip_comp_level指令

    语法:gzip_comp_level [1-9]

    默认值:gzip_comp_level 1

    gzip压缩比,1:压缩比最小,处理速度最快,9:压缩比最大但处理速度最慢(传输快但更消耗CPU)。通常设置为3便可。

  4. gzip_min_length指令

    语法:gzip_min_length length

    默认值:gzip+min_length 0

    设置容许压缩的页面最小字节数,页面字节数从header头的Content-Length中进行获取。默认值是0,无论页面多大都压缩。建议设置成大于1k的字节数,小于1k的可能越压越大。即:gzip_min_length 1024。

  5. gzip_http_version指令

    语法:gzip_http_version 1.0|1.1

    默认值:gzip_http_version 1.1

    识别http的协议版本。因为早期的一些浏览器或http客户端,肯能不支持gzip自解压,用户会看到乱码,因此作一些判断仍是有必要的。

  6. gzip_proxied指令

    语法:gzip_proxied[off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any…]

    默认值:gzip_proxied off

    Nginx做为反向代理的时候使用,开启或关闭后端服务器返回的结果,匹配的前提是后端服务器必需要返回包含"Via"的header头。

    off——关闭全部的代理结果数据的压缩。

    experied——启用压缩,若是header头中包含“Expires”头信息。

    no_cache——启用压缩,若是header头中包含“Cache-Control:no-cache”头信息。

    no-store——启用压缩,若是header头中包含“Cache-Control:no-store”头信息。

    private——启用压缩,若是header头中包含“Cache-Control:private”头信息。

    no_last_modified——启用压缩,若是header头中不包含“Last-Modified”头信息。

    no_etag——启用压缩,若是header头中不包含“ETag”头信息。

    auth——启用压缩,若是header头中包含“Authorization”头信息。

    any——无条件启用压缩。

  7. gzip_types指令

    语法:gzip_types mime-type[mime-type…]

    默认值:gzip_types text/html

    匹配mime类型进行压缩,(不管是否指定)“text/html”类型老是会被压缩的。

    注意:若是做为http server来使用,祝配置文件中要包含文件类型配置文件

    http

    {

      include  conf/mime.types;

      ……

    }

    若是你但愿压缩常规的文件类型,能够把代码写成这样:

    http

    {

      include conf/mime.types;

      gzip on;

      gzip_mim_length 1000;

      gzip_buffers  4 8k;

      gzip_http_version 1.1;

      gzip_types  text/plain application/x-javascript text/css text/html application/xml;

      ……

    }

  8. gzip_vary on指令

    和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,因此避免浪费不支持的也压缩,因此根据客户端的HTTP头来判断,是否须要压缩

参考文献:《实战Nginx》

相关文章
相关标签/搜索