Skip to content

删除消息时,一并删除不再被引用的图片缓存 - #368

Open
Fiiiga wants to merge 1 commit into
Finb:masterfrom
Fiiiga:fix/delete-message-image-cache
Open

删除消息时,一并删除不再被引用的图片缓存#368
Fiiiga wants to merge 1 commit into
Finb:masterfrom
Fiiiga:fix/delete-message-image-cache

Conversation

@Fiiiga

@Fiiiga Fiiiga commented Aug 26, 2026

Copy link
Copy Markdown

问题

目前所有删除路径都只删了数据库记录,图片文件无法被清理,也不会自动过期。
导致即使用户清空全部历史记录,图片占用的空间也不会释放,只能重装解决。

改动

新增 MessageImageCleaner,删除消息时一并清理不再被引用的图片缓存。

因同一个图片地址可能被多条消息引用,所以做了引用检查。清理跑在后台队列上。

接入了 6 个删除点:列表左滑单条、左滑分组、分组清空按钮、actionSheet 删除、右上角垃圾桶批量删除,以及 delete=1 远程删除和 ttl 过期自动删除。

需要确认的取舍

  1. 下拉查看大图会重新联网下载。NotificationContentExtension 读的是同一份缓存,缓存删掉后会重新下载。(通知中心里推送的缩略图是 NSE 复制的附件副本,不受影响)。不确定是否符合预期。

  2. 后两个删除点(远程删除、ttl 过期)是否该包含在内?它们不是用户主动点删除,但同样是消息永久消失。如果觉得不合适可以拆掉。

  3. 没有加测试。

说明

代码跑了 CI 验证,但时间仓促未本地编译。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant