遇到的问题:
设置了服务器自动删除缓存代码
find /www/server/nginx/proxy_cache_dir -type f -atime +14 -delete
为啥没有生效,还是有超过15天的文件在 比如下面这个文件 未知文件
文件路径:
/www/server/nginx/proxy_cache_dir/c/00/fb4a2df8d571c783040e3c33139ca00c
大小:
845.56 KB
权限:
600
所属组:
www
所属用户:
www
访问时间:
2025-08-03 16:23:01
修改时间:
2025-07-20 23:46:05
时间计算方式理解错误(最可能的原因)
-atime +14 表示「访问时间超过 14 天」,但这里的「14 天」是24 小时 ×14=336 小时前的文件。
你提供的文件访问时间是 2025-08-03 16:23:01,而当前时间是 2025-08-15(根据你的系统时间),两者相差仅 12 天(288 小时),未达到 14 天,所以该文件不会被 +14 匹配到,自然不会被删除。
2. 混淆了「访问时间」和「修改时间」
你的命令用的是 -atime(访问时间),但可能你实际想删除的是「修改时间」超过 14 天的文件。
你提供的文件修改时间是 2025-07-20 23:46:05,到 8 月 15 日已超过 25 天,若想基于修改时间删除,应改用 -mtime +14:
find /www/server/nginx/proxy_cache_dir -type f -mtime +14 -delete
对于反向代理缓存文件,更推荐基于「访问时间(atime)」来清理,原因如下:
- 缓存的核心价值是「被频繁访问」,如果一个缓存文件长期(比如 14 天)未被访问,说明它被再次访问的概率极低,保留价值不大,清理后不会影响正常业务。
- 而「修改时间(mtime)」仅表示缓存文件最初被创建 / 更新的时间,即使某个文件修改时间很早,但最近仍在被频繁访问(比如热门资源),删除它会导致缓存失效,增加源服务器压力。














