cache 控制
Table of Contents
expire
expires -1s 永远过期 expires 200s 缓存 200 秒 expires 30m 缓存 30 分 expires 2h 缓存 2 小时
expires 200s 相当于 Cache-Control: max-age=200
使用 cache-control, 如下
add_header Cache-Control max-age=200;
具体: http_cache
proxy cache (放在 http 段中)
? mkdir /data/proxy_temp_path ? mkdir /data/proxy_cache_path
proxy_store on|off proxy_temp_path /data/proxy_temp_path; proxy_cache_path /data/proxy_cache_path levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g; /data/proxy_cache_path 表示缓存文件路径 levels 表示缓存空间有两层, 第一层为 1 个字母, 第二层为 2 个字母 keys_zone 缓存的名字 500m 缓存空间大小 inactive 1d 1 天内没有被访问就删除 max_size 30g 硬盘缓存空间
根据状态码来缓存
proxy_cache_valid 200 302 10m; proxy_cache_valid any 1m;
proxy_cache_methods: GET HEAD (默认, 没有 POST) proxy_cache_key $host$request_uri$cookie_user; proxy_cache_min_users 1; 请求被响应就缓存 proxy_cache_user_stale error timeout; 提供过期或者错误的缓存 proxy_max_temp_file_size 1g; cache 文件的大小 proxy_temp_file_write_size 5m; cahce 先写到 temp file, 然后再写回 cache file
删除缓存
proxy_cache_purge cache_one $host$uri$is_args$args;
示例:
http { ... proxy_store on; proxy_temp_path /data/proxy_temp_path; proxy_cache_path /data/proxy_cache_path levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g; ... server { location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://xxxx; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { proxy_cache_valid 200 304 2h; proxy_cache_valid any 1m; proxy_cache_key $host$uri$is_args$args; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxxx; } location ~ /purge(/.*) { allow 127.0.0.1; allow 192.168.1.0/24; deny all; proxy_cache_purge cache_one $host$1$is_args$args; } } }