缓存的好处

  1. 减轻服务器(业务处理服务器等)负载
  2. 提高网页响应效率
  3. 降低网络阻塞,增强网络可扩展性

    Proxy缓存

    配置项

    proxy_cache cacheName; # 用于配置一块公用的内存区域名称
    proxy_pass http://www.oyyh.cn/abc; # 代理的服务器
    proxy_cache_vaild 200 304 12h; # 根据HTTP状态决定缓存时间
    proxy_cache_vaild any 10m; # 设置访问方式的缓存时间,可以设置any, get, psot等
    proxy_cache_key $host$uri$is_args$args; #设置nginx服务器在内存中缓存数据建立索引时的key
    include proxy_params; # 引入缓存文件
    proxy_set_header Host $http_host; # 设置请求头信息
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 30; # 设置代理服务器超时时间(s)
    proxy_send_timeout 60; # 设置请求给代理服务器的超时时间(s)
    proxy_read_timeout 60; # 读取代理服务器超时时间(s)
    proxy_buffering on; # 开启缓冲区
    proxy_buffer_size 32k; # 缓冲区大小
    proxy_buffer 4 128k; # 指定一个请求的缓冲区大小以及数量

    开启代理缓存

    proxy_temp_path /home/data/proxy; # 代理临时存储目录
    # proxy_cache_path 作用域http块下面
    proxy_cache_path /home/data/proxy/cache levels=1:2 keys_zone=cache_one:20m inactive=1d;
    max_size = 5g;
    client_body_buffer_size = 512k;
    proxy_connect_timeout 30;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
    proxy_buffer_size 32k;
    proxy_buffer 4 64k;
    proxy_buys_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_next_upstream error timeout invalid_header http_500 http_503 http_504;
    proxy_cache cache_one;
    将上述文件放置在 proxy.conf中,然后通过include引入
    http {
    include proxy.conf;
    }

    使用代理缓存

    location ^~ /abc {
    proxy_cache cache_one;
    proxy_pass https://www.baidu.com;
    proxy_cache_valid 200 304 12h;
    proxy_cache_valid any 10m;
    proxy_cache_key $host$uri$is_args$args;
    }

配置不使用缓存

proxy_no_cache $a $b $c; # a,b,c变量,只要有一个值为1,则不进行缓存
location /api/ {
set $a 0;
# 如果访问的后缀是php的,则设置变量 $a = 1
if ( $request_uri ~ .php$ ) {
set $a 1;
}
proxy_no_cache $a; # $a 只能等于0或1,如果为1则不缓存
….
}
访问:http://localhost/api/index.php # 不进行缓存
访问:http://localhost/api/index.html # 进行缓存

清除Nginx缓存

ngx_cache_purge是nginx第三方模块,能够帮助我们清除nginx缓存。
重新编译nginx:
./configure … —add-module=/home/data/ngx_cache_purge-2.3
Nginx配置:
location ~ /clear_cache(.*) {
allow all; # 配置允许哪些IP访问,这里我们允许所有
proxy_cache_purge cacheName $host$uri$is_args$args; # 缓存区的名称以及缓存的key
}

浏览器缓存

客户端缓存一般是指浏览器、app缓存,目的是加速各种静态资源的访问,降低服务器压力。
有的浏览器可能不具备自动缓存功能,需要nginx手动配置并通知浏览器进行缓存。
示例:
location .*.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 10s; # 在本地缓存10秒
}
image.png