webp-sh / webp_server_go

Go version of WebP Server. A tool that will serve your JPG/PNG/BMP/SVGs as WebP/AVIF format with compression, on-the-fly.
https://docs.webp.sh
GNU General Public License v3.0
1.79k stars 173 forks source link

如何限制硬盘的使用 #342

Closed ihufu closed 2 months ago

ihufu commented 2 months ago

我是用来转换图片站的,会经常把硬盘用到100%导致无法使用。 我翻看了参数没有说到限制硬盘使用,有什么方法能限制吗。

n0vad3v commented 2 months ago

你的问题和以下两个 Issue 相关:

目前这个服务还不支持自动清理文件,暂时可以手动通过加入 crontab 来清理,例如只保留 1 天的 WebP 缓存,类似如下:

0 0 * * * find /path/to/your/webp/exhaust/ -type f -ctime +1 -exec rm {} \;

如果未来我们要加入类似的功能的话,你期待的是一种什么样的配置形式呢?(例如,设定最大缓存总容量?)

ihufu commented 2 months ago

我希望是设定最大容量,这样到达了最大限制就删除最早缓存的。 CACHE_TTL 这个ttl到期会自动删除吗? metadata、remote-raw这两个目录不需要删除吗?

n0vad3v commented 2 months ago

根据文档: https://docs.webp.sh/usage/configuration/CACHE_TTL 的设定是在使用 Remote Backends 的时候回源探测的时间(即一次成功回源后 N 分钟内不再回源探测)。

metadata、remote-raw 也可以一并删除,我们在考虑在后续开发加入一个 MAX_CACHE_SIZE 参数指定最大缓存容量(单位是 MB),这样设定了非 0 的值后 WebP Server Go 会自动间隔 X 时间(分钟)清理 exhaustmetadataremote-raw 目录保证分别不超过设定值,敬请期待。

ihufu commented 2 months ago

如果这个MAX_CACHE_SIZE是非“0”值把转换的图片清理了,CACHE_TTL也没到期,那还会去后端回源探测吗?

n0vad3v commented 2 months ago

如果这个MAX_CACHE_SIZE是非“0”值把转换的图片清理了,CACHE_TTL也没到期,那还会去后端回源探测吗?

(如果未来我没写出 Bug 的话)会的,因为本地已经找不到转换的图片了,所以会回源检测+重新拉取原图+转换。

ihufu commented 2 months ago

0 0 find /path/to/your/webp/exhaust/ -type f -ctime +1 -exec rm {} \; 0 0 find /path/to/your/webp/metadata/ -type f -ctime +1 -exec rm {} \; 0 0 * find /path/to/your/webp/remote-raw/ -type f -ctime +1 -exec rm {} \;

是不是把对应的目录改成这样就可以只保留一天的数据了? 这些都是本地对应的目录吗?

n0vad3v commented 2 months ago

看上去没错,「本地对应的目录」是指?

ihufu commented 2 months ago

就是物理机映射到docker的目录

n0vad3v commented 2 months ago

那应该没错

ihufu commented 2 months ago

那就只能先用任务计划了,在等你们更新。

n0vad3v commented 2 months ago

@ihufu 我们发布了 0.12.0,加入了 MAX_CACHE_SIZE 选项,欢迎试用体验,相关文档:https://docs.webp.sh/usage/configuration/

https://github.com/webp-sh/webp_server_go/releases/tag/0.12.0

ihufu commented 2 months ago

336 这个啥时候能修复啊

n0vad3v commented 2 months ago

336 这个啥时候能修复啊

这个问题我们已经在原 Issue 中回复,我们目前倾向于对于有同样前缀的路径应该按照由长到短的顺序配置,暂无明确优化时间。

ihufu commented 2 months ago

“MAX_CACHE_SIZE”这个的默认单位是MiB,能不能改成用户自定义,比如我要限制100g。 "MAX_CACHE_SIZE": 100g, 这样是不是更方便。

BennyThink commented 2 months ago

“MAX_CACHE_SIZE”这个的默认单位是MiB,能不能改成用户自定义,比如我要限制100g。

"MAX_CACHE_SIZE": 100g, 这样是不是更方便。

暂无此计划,如有PR欢迎