nginx性能提升之gzip压缩和浏览器缓存expire

一、gzip压缩

gzip模块可以启用压缩功能,其实是一种服务端的压缩,文件本身并没有压缩(gzip压缩只对文本文件作用较大,对于图片、视频等多媒体资源并无多大用处)

先做一个试验:我们以一个网页为例,这个网页有图片和文字,加载了css和js(其中css是腾讯新闻首页的css,js为jquery文件)

压缩前的大小为:

我们启用gzip压缩后来看看:

显然,对index.html进行了压缩,但是css和js都没有压缩(gzip对图片压缩效率不高,而且压缩程度并不高),这是为什么呢?

好吧,我们来学习一下gzip几个比较重要的指令

(1)gzip:这是一个开启或关闭gzip压缩的命令:

用法 :gzip on|off;

on代表启用,off代表不启用

可以在http段,location,if段内使用

(2)gzip_comp_level :代表压缩的级别

用法:gzip_comp_level [1-9];

压缩级别从1到9,压缩级别越高,文件被压缩的越小(当然不是级别越高越好,级别越高,压缩消耗的资源越大,而且到很高的级别,可压的空间并不大,一般默认为5)

(3)gzip_min_length:表示最小压缩的文件大小,单位是b(字节)

用法:gzip_min_length 1000;

即当文件小于1000b时不启用压缩(毕竟太小的文件压缩空间很小,反而浪费资源)

(4)gzip_types :可压缩的文件类型

用法:gzip_types MIME文件类型;

注:MIME文件类型可以写多个,多个用空格隔开。

默认只对text/html

上面的例子,我们也增加css和js的压缩:(默认有text/html所以不用加这个)

  1. gzip_types text/css application/x-javascript

再看一下:

如何判断是否启用了gzip的功能呢,除了看文件大小,还可以在响应头中查看:

未查看gzip前:

启用gzip后:

二、浏览器缓存expire

开启浏览器缓存可以减少网络请求,让页面响应速度更快,为服务器节约更多的资源,nginx中启用浏览器缓存很简单(即告诉浏览器资源的)

用法:expires 缓存时间;

例如:expires 1d;

缓存时间可以使用时间如(1d表示1天,30s表示30秒)、max(max 指定“Expires”的值为 31 December 2037 23:59:59 GMT)或off(代表不启用浏览器缓存)

  1. location ~ .+.(jpg|jpeg|png|gif)$ {
  2. expires 1d;
  3. }

只要是.jpg或jpeg或png或gif结尾的(即图片)的文件都缓存1天

我们查看一下请求头信息:当前时间为2015-01-20日14:02