一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

nginx图片缓存处理

时间:2014-04-05 编辑:简简单单 来源:一聚教程网

方法一

 代码如下 复制代码

server {
  # ...此处省略N行配置
  # example: /thumb/[md5].png_300x187.png
  location ~ "/thumb/([0-9a-f]{32}.(png|jpg|gif))_(d+|-)x(d+|-).(png|jpg|gif)$" {
    access_log off;
    set $image $1;
    set $width $3;
    set $height $4;
    # 建议使用try_files代替if
    try_files /thumb/$image =404;
    image_filter resize $width $height;
    image_filter_buffer 10M;
    # 只会在浏览器端缓存,若要在服务器端缓存,可采用proxy的方案(此处没有给出,可自行google)
    expires 7d;
  }
}

nginx还有一种缓存proxy_cache,它在设计上比proxy_store 更先进,采用内存+硬盘方式缓存,可以设置缓存大小和缓存过期。

 代码如下 复制代码

http {
    ,,,,,
    proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;
    server {
    ........www.111com.net
        location ~* ^.+.(js|ico|gif|jpg|jpeg|png|html|htm)$ {
        log_not_found off;
        access_log off;
        expires 7d;
        proxy_pass http://www.111com.net;
        proxy_cache imgcache;
        proxy_cache_valid 200 302 1d;
        proxy_cache_valid 404 10m;
        proxy_cache_valid any 1h;
        proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
        }
    }
}

上面的代码将会使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。

热门栏目