转自: http://willko.iteye.com/blog/667091
对于静态文件先压缩再输出是再正常不过的事了,但是这种压缩都是动态的,在每次请求都会先压缩再输出,大大浪费了很多cpu。如果前端加了反向代理缓存,那能减少这种浪费。但不是每个生产环境前端都有缓存的。而nginx有个模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持gzip的请求则读取原文件。
编译nginx的时候需要把--with-http_gzip_static_module参数加上。
配置
#启动预压缩功能,对所有类型的文件都有效
gzip_static on;
#找不到预压缩文件,进行动态压缩
gzip on;
gzip_min_length 1000;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain application/x-javascript text/css application/xml;
#gzip公共配置
gzip_http_version 1.1
gzip_proxied expired no-cache no-store private auth;
#纠结的配置
#对于ie有个bug,响应vary头后将不会缓存请求,每次都会重新发新的请求。所以,对于ie 1-6直接禁用gzip。
gzip_disable "MSIE [1-6]\.";
#开启Http Vary头,vary头主要提供给代理服务器使用,根据Vary头做不同的处理。例如,对于支持gzip的请求反向代理缓存服务器将返回gzip内容,不支持gzip的客户端返回原始内容。
gzip_vary on;
- gzip_static配置优先级高于gzip
- 开启nginx_static后,对于任何文件都会先查找是否有对应的gz文件
- gzip_types设置对gzip_static无效
为了方便生产环境自动生成压缩文件,写了一条命令自动完成这些事情
- 根据文件后缀名遍历需要压缩的文件
- 对比文件的修改时间
- 自动调用gzip生成压缩文件
find ./ -type f -printf '%TY %Tm %Td %TH %TM %TS\t%p\n'
| grep -iE '\.(html|txt|css|js)$'
| awk -F'\t' '{
gz_file=$2 ".gz";
stat_cmd="stat -c \"%Y\" " gz_file;
exist_cmd="[ -e \"" gz_file "\" ] && echo 1 || echo 0";
exist_cmd | getline gz_file_exist;
if (gz_file_exist) {
stat_cmd | getline last_modify_timestamp;
} else {
last_modify_timestamp=0;
}
if (last_modify_timestamp < mktime($1)) {
system("gzip -c9 " $2 " > " gz_file);
print gz_file " [created]";
}
}'
chrome将不会支持gzip了,而用SDCH,SDCH比较像浏览器级的minify
分享到:
相关推荐
标题 "nginx访问静态文件不下载" 暗示了用户可能遇到了在使用Nginx服务器时,尝试访问静态文件(如HTML、CSS、JavaScript或图片等)却导致浏览器下载文件而不是正常显示的情况。Nginx是一款高性能的HTTP和反向代理...
# 静态文件目录,根据实际情况调整 index index.html index.htm; location / { try_files $uri $uri/ =404; } } } ``` 这里的关键行是`gzip on;`,它开启了GZIP压缩。`gzip_types`指令定义了哪些类型的文件...
这样,当Vue Element Admin项目被打包时,所有匹配规则的文件都会被预先gzip压缩,准备就绪后上传到Nginx服务器。 总结起来,这个压缩包提供了一个已经优化过的Vue Element Admin项目,它经过了gzip压缩,能够更快...
它不仅可以作为静态文件服务器,还能通过反向代理功能将请求转发给后端的应用服务器,实现负载均衡,提高服务的可用性和响应速度。 gzip压缩技术则是在HTTP传输中广泛使用的一种数据压缩方法,它可以减小网页资源的...
2. **gzip压缩**:为了提高网站性能,Nginx提供了gzip静态内容压缩功能,可以减小传输数据量,加快页面加载速度。在Nginx配置文件中,我们需要添加或修改以下部分来启用gzip: ```nginx gzip on; gzip_types text...
Nginx擅长处理静态文件请求,可以高效地进行文件传输,因此在静态资源服务方面表现出色。 ### 2. 实现本地文件映射的步骤 #### 2.1 安装Nginx 首先,你需要在你的服务器上安装Nginx。在Ubuntu或Debian系统中,...
在Nginx中,可以使用ngx_http_gzip_static_module模块来实现静态文件的压缩。 要配置Nginx的静态文件压缩,首先需要在编译Nginx时加入静态压缩模块。这可以通过在编译命令行中添加 "--with-...
nginx配置文件nginx.conf ,主要标记了nginx 的负载配置upstream,静态资源缓存,是否开启压缩
这些工具在打包过程中自动将JS文件转换为gzip格式,生成的文件可以在静态资源服务器上直接使用。 在提供的压缩包中,"gzip使用说明"文档将详细解释如何安装gzip和实际操作步骤。它可能涵盖了在不同操作系统(如...
在Nginx中启用Gzip压缩,可以使静态资源(如HTML、CSS、JavaScript等)在传输过程中被压缩,降低了带宽需求,尤其对于移动用户和低带宽环境来说,效果尤为明显。 以下是一些Nginx中Gzip压缩的主要配置指令: 1. `...
在Nginx中启用Gzip压缩通常涉及编辑Nginx的配置文件,通常是`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`。以下是一些关键配置指令及其作用: 1. `gzip on;`:这一行用于开启Gzip压缩功能。设置为...
当用户访问相应域名时,Nginx根据server_name匹配并找到正确的server块配置,然后根据请求的URI去root指令指定的目录中查找对应的静态文件,并将文件内容返回给用户。 以上配置完成后,还需要创建网站资源目录并...
4、单击“服务”标签,选中“压缩应用程序文件”和“压缩静态文件”,同时根据情况设置临时目录的最大容量,初期可以限制为1G左右; 5、返回Internet信息服务(IIS)管理器,右击“Web服务扩展”,弹出Web服务扩展...
其中,Gzip是一种广泛使用的压缩算法,它可以有效地减小静态资源(如HTML、CSS、JavaScript文件)的大小,从而加快内容的传输速度。Nginx作为一个高性能的HTTP和反向代理服务器,它提供了对Gzip压缩的支持。这篇文章...
如果想要进一步提高性能,可以结合使用Gzip压缩和其他性能优化策略。 总的来说,`nginx-http-concat`模块是Nginx服务器的一个强大工具,可以帮助优化网站性能,尤其是对于那些包含大量静态资源的大型网站。通过减少...
2. **压缩输出**:启用Gzip压缩可以显著减小静态文件的大小,提高传输效率。在http配置段中添加 `gzip on;` 即可开启Gzip。 3. **合并和缩小CSS/JS文件**:将多个CSS或JavaScript文件合并为一个文件,可以减少HTTP...
6. **Gzip压缩**:为了减少网络传输的数据量,Nginx可以启用Gzip压缩,对响应内容进行压缩后再发送给客户端。 7. **缓存机制**:Nginx可以缓存经常请求的资源,减少对后端服务器的压力,提高响应速度。 8. **限速...
3. **静态内容服务**:Nginx非常适合于提供静态内容,如图片、视频和HTML页面。 4. **SSL/TLS终端**:Nginx支持SSL和TLS协议,可以作为SSL终端,为HTTP流量提供加密。 5. **模块化设计**:Nginx具有模块化的设计,...
- **http块**: 包含多个server块,定义HTTP协议相关设置,如开启gzip压缩(gzip on)。 - **server块**: 定义一个监听端口的服务器,可以有多个,如监听80端口(listen 80)。 - **location块**: 处理特定URL请求,...