当前位置: 代码迷 >> Web前端 >> nginx gzip 静态资料压缩
  详细解决方案

nginx gzip 静态资料压缩

热度:663   发布时间:2012-11-03 10:57:44.0
nginx gzip 静态文件压缩

nginx gzip 静态文件压缩

nginx gzip 静态文件压缩能很大程度上提高网站的访问速度,但是文件的压缩会占用很大的内存,如果将网站的静态的文件提前用gzip压缩后再配置nginx的 rewrite规则来转向到压缩后的文件将会对网站的性能有很大的提高。

思路,把静态文件用gzip压缩后放在网站的目录下,然后用rewrite把请求转发到压缩后的文件,并增加add_header Content-Encoding gzip;这都很容易理解,但是Content-Type的设置就不是那么好搞的了。common.js压缩后是common.js.gz,转发到.gz 文件就好了。

第一次接触nginx对它的配置不是很熟悉,最初在location段增加add_header Content-Type原本认为可以了,但是查看页面传输信息里会有两个Content-Type,一个为新增加的那个,一个为http段的 default_type。

nginx返回两个Content-Type于是我把add_header Content-Type 去掉,在mime.types中增加一个mime类型,增加一个jsgz mime类型并把压缩后的文件更名为common.js.jsgz。转发到.jsgz文件就好了。这样设置可以了但是我总感觉不爽,多增加了几个mime 类型。

最终解决方法在location段增加default_type设置,配置如下:

location ~ .*\.(js)?$

{

expires 30d;

default_type application/x-javascript;

if ($http_accept_encoding ~ “gzip”){

set $rule_0 1$rule_0;

}

if (-f $request_filename.gz){

set $rule_0 2$rule_0;

}

if ($rule_0 = “21″) {

add_header Vary Accept-Encoding;

add_header Content-Encoding gzip;

gzip off;

rewrite (.*) $1.gz break;

}

}

标签: nginx