[性能优化系列] 01. gzip的使用

优化网站响应速度的第一件事就应该想到开启流量压缩,这是最简单,成本最低且非常有效果的手段。假如你的网站有大量静态资源(css、js等),或者大量静态页面, 那么开启gzip,效果将会非常明显。

## Nginx的gzip配置

本文继续以nginx为例,apache原理类似,但具体配置请自行google。本文假设测试网址是`www.typechodev.com`,安装的测试程序是typecho1.0正式版,启用默认主题。

现在假设nginx原始配置如下(未开启gzip的配置):

server {
listen 80;
listen [::]:80;

root /var/www/typechodev.com;
index index.php;

server_name www.typechodev.com;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php$request_uri;
}

location ~ .php($|/.*)$ {
include snippets/fastcgi-php.conf;

# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
access_log /var/log/nginx/typechodev.access.log;
error_log /var/log/nginx/typechodev.error.log;
}

访问`http://www.typechodev.com`首页,打开chrome的开发者工具,可以看到各个资源的流量大小。
![gzip_off.png][1]

接着,我们启用gzip,配置如下:

server {
listen 80;
listen [::]:80;

root /var/www/typechodev.com;
index index.php;

server_name www.typechodev.com;
### 这里开始gzip配置
gzip on;
gzip_disable “msie6”;

gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
### 这里结束gzip配置
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.php$uri;
}

location ~ .php($|/.*)$ {
include snippets/fastcgi-php.conf;

# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
access_log /var/log/nginx/typechodev.access.log;
error_log /var/log/nginx/typechodev.error.log;
}
继续对比相同页面的静态资源流量大小:

![gzip_on.png][2]

可以看到,`grid.css`这个文件,从原来的5.8KB,降到了1.3KB,降幅高达70%以上,可见效果非常好。

## 注意事项

**1、不要对img等二进制类型进行压缩,性价比不高**

jpg/png等二进制类型的文件,一般情况下都已经做过了优化,可压缩率一般已经不高,因此为了避免不必要的性能损耗,可以排除掉这种二进制类型的压缩。

**2、https需要关闭gzip,否则会有漏洞**

如果你网站采用`https`方式连接,则建议关闭gzip压缩。相同的内容,其压缩长度是固定的(压缩比),如果https连接加上了gzip压缩,攻击者可以在不知道密钥的情况下,通过枚举遍历的方式,不断对比压缩长度,从而有可能猜出你连接中的cookie值,从而泄露认证信息。当然,如果你的网站只是个无具体业务的博客站,就不需要关心这个了。

[1]: https://www.typechodev.com/usr/uploads/2017/12/2432953421.png
[2]: https://www.typechodev.com/usr/uploads/2017/12/210973747.png

原创文章,作者:admin,如若转载,请注明出处:https://www.typechodev.com/%e9%ab%98%e6%80%a7%e8%83%bd/880.html

(0)
上一篇 2017-12-08 上午3:50
下一篇 2018-01-18 上午10:04

相关推荐

发表评论

您的电子邮箱地址不会被公开。