Nginx作为web服务器,对于静态文件的优化有很多的长处在此我就将静态文件优化分为3步,实现高性能的读取
注:通常所指的静态文件为:js,css,jpg,jpeg,png,gif,swf等
将Nginx作为前端反向代理,缓存静态文件
Nginx提供代理缓存,在此技术上显示缓存静态文件,能大大提高资源的获取速度,显著降低系统调用静态资源所产生的I/O瓶颈
http{
//反向代理设置
upstream realserver{
server localhost:88;
}
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path /tmp/proxy_temp_dir;
//代理缓存设置
proxy_cache_path /tmp/proxy_cache_dir levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
}
location / {
//代理设置
proxy_pass http://realserver;//对应upstream后的名称
proxy_setHeader Host $host;
proxy_setheader X-Forwarded-For $remote_addr;
//代理缓存设置
proxy_cache cache_one;//对应proxy_cache_path中的keys_zone
proxy_cache_valid 200 304 1d;//对于200及304的http页面缓存
proxy_cache_key $host$uri$is_args$args;//缓存的key值
}
Gzip压缩及设定HTTP请求头
http{
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_disable "MSIE [1-6]\.";
}
server{
gzip_proxied any;//对于任意访问都进行gzip压缩
//如果是后端服务器,则需要设置
gzip_vary on;//用于写响应头Vary: Accept-Encoding,让前端代理进行压缩
}
Localation / {
expires 1d;//写请求响应头
}
利用模块,压缩js及css,自动生成图片缩略图
我推荐3个模块针对静态文件进行优化:
- ngx_pagespeed:这款是google开发的对于页面加速,提供全面的解决方案,内部功能很多,上诉2个步骤的功能也包含,还能去除js和css文件中的空白换行等,进行文件压缩
- ngx_image_thumb:主要功能是对请求的图片进行缩略/水印处理,支持文字水印和图片水印,程序中不用对用户上传的图片进行处理,在需要的时候才生成所需的图片,无疑,该模块成为图片处理的利器,开源中国上有针对该模块的详细说明,点击
- ngx_http_concat:主要功能是实现对于js和css文件的合并,用一个请求实现多个文件调用,可以有效的降低页面的请求数