好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

nginx缓存cache的几种方式

1、传统缓存之一(404)
    location / {
    root /home/html/;#主目录
    expires 1d;#网页的过期时间
    error_page 404 =200 /fetch$request_uri;#404定向到/fetch目录下
    }
    location /fetch/ {#404定向到这里
    internal;#指明这个目录不能在外部直接访问到
    expires 1d;#网页的过期时间
    alias /home/html/;#虚拟目录文件系统地址要和locaion /一致,proxy_store会将文件保存到这目录下
    proxy_pass http://xok.la/;#后端upstream地址,/fetch同时是一个代理
    proxy_set_header Accept-Encoding '';#让后端不要返回压缩(gzip或deflate)的内容,保存压缩后的内容会引发乱子。
    proxy_store on;#指定nginx将代理返回的文件保存
    proxy_temp_path /home/tmp;#临时目录,这个目录要和/home/html在同一个硬盘分区内
    }

2、传统缓存之二(!-e)
    location / {
    root /home/html/;
    proxy_store on;
    proxy_set_header Accept-Encoding '';
    proxy_temp_path /home/tmp;
    if ( !-f $request_filename )
    {
    proxy_pass http://xok.la/;
    }
    }

3、基于memcached的缓存
nginx对memcached有所支持,但是功能并不是特别之强,性能上还是非常之优秀。
    location /mem/ {
    if ( $uri ~ "^/mem/([0-9A-Za-z_]*)$" )
    {
    set $memcached_key "$1";
    memcached_pass 192.168.6.2:11211;
    }
    expires 70;
    }

4、基于第三方插件ncache

5、nginx新开发的proxy_cache功能
    location / {
    proxy_pass http://xok.la/;
    proxy_cache xok1;#使用xok1这个keys_zone
    proxy_cache_valid 200 302 1h;#200和302状态码保存1小时
    proxy_cache_valid 301 1d;#301状态码保存一天
    proxy_cache_valid any 1m;#其它的保存一分钟
    }

综合起来可以简单优化静态文件:

    location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|flv)$
    {
    proxy_pass http://backend;
    expires 6h; #设置浏览器过期时间
    proxy_cache xok1;#使用xok1这个keys_zone
    proxy_cache_valid 200 302 1h;#200和302状态码保存1小时
    proxy_cache_valid 301 1d;#301状态码保存一天
    proxy_cache_valid any 1m;#其它的保存一分钟
    }

查看更多关于nginx缓存cache的几种方式的详细内容...

  阅读:69次