### **1. 简单版** > 参数:expires 浏览器请求流程: ![](https://img.kancloud.cn/67/c9/67c9f6c46dece276895aa2e9c62ec5c6_554x498.png) 使用示例: ``` location ~ .*\.(htm|html)$ { expires 1h; #缓存时间 root 路径; #可无 } ``` ### **2. 复杂版** ![](https://img.kancloud.cn/38/89/38896b8b8eb9e38ee0254ee68962f458_1241x448.png) ①基本配置 ``` proxy_cache_path /data/nginx/cache_item levels=1:1:2 keys_zone=cache_item:10m max_size=10g inactive=60m; server { location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://127.0.0.1:8080; proxy_cache cache_item;         proxy_cache_key $host$uri$is_args$args;#以全路径md5值做做为Key proxy_cache_valid 200 304 12h; #对不同的HTTP状态码设置不同的缓存时间 expires 7d; #总体缓存时间 } } ``` 参数说明: | 父元素 | 名称 | 描述 | | --- | --- | --- | | http | proxy_cache_path | 指定缓存区的根路径 | | | levels| 缓存目录级最高三层,每层1-2个字符表示。如1:1:2三层。 | | | keys_zone | 缓存块名称及内存块大小。如cache_item:500m表示声明一个名为cache_item大小为500m。超出大小 后最早的数据将被清除。 | | | max_size| 缓存区硬盘的 最大值。超出闲置数据将被清除 | | | inactive | 最长闲置时间 如10d 如果一个 数据被闲置10天则将被清除 | | location | proxy_cache| 指定缓存区,对应keys_zone中设定的值 | | | proxy_cache_key| 通过参数拼装参数key如:`$host$uri$is_args$args`则会以全部领md5值做为key | | | proxy_cache_valid | 对不同的状态码设置缓存有效期 | ②缓存的清除 该功能 可以采用第三方模块ngx_cache_purge实现: 为nginx添加ngx_cache_purge模块 ``` #下载ngx_cache_purge 模块包 ,nginx 版本为1.6.2 purge 对应2.0版 wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz #查看已安装模块 ./sbin/nginx -V #进入nginx安装包目录 重新安装 --add-module为模块解压的全路径 ./configure --prefix=/root/svr/nginx --with-http_stub_status_module --with-http_ssl_module -- add-module=/root/svr/nginx/models/ngx_cache_purge-2.0 #重新编译 make #拷贝 安装目录/objs/nginx 文件用于替换原nginx 文件 #检测查看安装是否成功 nginx -t ``` 清除配置 ``` location ~ /purge(/.*) { #允许访问的IP allow 127.0.0.1; allow 192.168.0.193; #禁⽌访问的IP deny all; #配置清除指定缓存区和路径(与proxy_cache_key⼀⾄) proxy_cache_purge cache_item $host$1$is_args$args; } ``` 测试: 1、首次访问: http://localhost8080/demo/images/logo.jpg 2、缓存清理 http://localhost8080/purge/demo/images/logo.jpg