众所周知,discourse中的删除是软删除,那么删除帖子之后里面的图片管理员还能看到,理论上还是属于在使用的资源?
所以删除的帖子,里面的上传资源会自动清除吗?
众所周知,discourse中的删除是软删除,那么删除帖子之后里面的图片管理员还能看到,理论上还是属于在使用的资源?
所以删除的帖子,里面的上传资源会自动清除吗?
删除后,上传的资源是不会删除。
我记得以前删除了不少内容,有些内容里面是有附件的,重新恢复后,附件又正常出现了。
不知道 Discourse 内有没有一个什么把删除的东西放到其他地方暂存的机制。
如果没有的话,那么删除的内容就还是在存储上了。
应该是这两个设置
Clean orphan uploads grace period hours
Purge deleted uploads grace period days
此外s3还有一个设置
S3 configure tombstone policy
这是一个比较矛盾的选项。
很多人希望删除后是完全删除,哪怕是再重新输入内容。
Discourse 的删除机制过于严谨,导致很多东西删不掉。
一个比较极端的例子,一个用户可能错误的上传了一张图片,这张图片又正好有一些敏感信息。
那么删除后删不掉就挺麻烦。
办法应该就是,重新上传一张图片。
那么先前上传的图片就成i Orphan Uploads,这个上传图片没有关联到任何的主题上,再经过几十个小时后,这个图片就会从系统中删除了,再经过几十天,这个图片就会从 S3 中删除。
整个删除过程可能需要几十天的时间。
根据我的理解,默认设置下
没有在任何地方使用到的资源,应该会在几十天后从本地和s3上都删除
保守是保守,但这设置也可以改嘛,改成一天也可以
这个帖子我看过,但是实际上有个问题就是,哪怕你在帖子里删除了图片,实际上它还是保留在编辑记录里,并不会成为孤立上传,真正的孤立上传只有图片上传后你没有发出来的图片,不知道是不是我理解错误。
做个实验看看就知道了
我已经把自己站点这两个设置改成了1h、1day
在这个topic上传了一张照:https://forum.beginner.center/t/topic/1909
其中的照片链接是:https://discoursecdn.beginner.center/original/2X/a/a40cd0a27875fdbea0ed1e9f6bd4178ea712f907.png
让我们看看1天后还在不在。
话说discourse的cdn直接给用户展示的是原始链接,会不会存在被刷CDN的问题?如何解决? 蹲蹲大佬解答 @honeymoose @hex @Lhcfl @VegaMonika
还有一个小问题,这两个id是一个人吗?观察这么久说话的风格太像了😂,而且我也在自己的论坛上开了大小号间替发言营造互动的气氛(
根据官方的说法有关孤立附件的定义:How to make an image orphaned so that it gets removed? - Support - Discourse Meta
an image is orphaned if and only if it’s not referenced in the latest version
如果附件在历史版本中,不是最后的版本的附件,Discourse 认为是孤立附件,会被删除。
an image is orphaned if and only if it’s not referenced
符合上面的任何一条定义的附件都会被认为存在引用而不会被删除。
哈哈,是一个人。都是我 @honeymoose
使用另外一个号的原因是这个号没有管理员权限,只给了 Level 4,本来是用来测试一些功能的。后来就拿来一直用了。
另外就是因为是 Level 4,网站还可以显示广告,管理员不显示广告,也不好测试广告的功能。
现在大部分情况都是用 hex 这个账号发内容和回复,用 @honeymoose 这个账号进行管理和回复。
有时候要调用 AI 的功能,就用了 @honeymoose 这个账号创建内容,然后把内容的所有人转移到 hex 这个账号上。
你的感觉是对的,都是一个人,所以风格都差不多,图片内容也差不多。
这个和刷网站的问题我感觉同样无法解决。
不过,这个可以用 cloudflare 来解决。
cloudflare 可以设置 CNAME,在 CNAME 中使用代理,这样对刷 CDN 的问题就交给 cloudflare 吧。
除了cloudflare的代理我还想到一个解决办法,目前已经看到有工具实现了这个思路
简单来说,当用户访问这个资源的时候,他并不能直接访问,而是服务器端实时给出一个密钥,在限定时间内资源原始链接➕密钥=这段时间可以访问的真正链接
这样就一定程度上减少了刷cdn的问题
比如最近我们使用cloudreve分发我们的数据,其中老版本由我们自己的本地服务器分发节省开支
https://im.beginner.center/download/
新版本用cdn分发用户下载更快体验更好,但也更贵
https://cloudreve.beginner.center/s/Mat4?path=%2F
用户下载时,cloudreve就会给出一个加密后的链接(当你访问这个链接的时候应该已经过期打不开了)
而原始链接直接访问会报错
https://cloudrevecdn.beginner.center/uploads/2025/04/13/XNzfCrEL_01校徽原稿_画板%25201.jpg
不过具体的技术细节我不是很懂
我目前使用的cdn是无限流量的(实际上请求速率会有一定的限制),uploads保存在服务器上。
没有更换s3的其中一个原因就是,某些s3厂家(例如CF R2)是会对404请求计费的,也就是说只要有s3 cdn地址,在后面接上乱码.jpg,虽然访问是404,但还是会计费的。
这个技术和 S3 的访问技术基本类似。
在访问的时候会在 URL 后面附加一个 token,这个 token 是有效期的,当有效期过了,哪怕你的 URL 是正确的也不会让你进行访问了。
如果使用 S3 或者 CloudFront 的话,可能会使用相同的技术。
我们这里用的 CF 的代理,所以基本上没有考虑刷 CDN 的问题。
说实话,这几天我都觉得我们站的访问不有点意外,不过整体请求差不多,也就懒得管了。
CF 的价值也在这里。
刷 CDN 让站长多付钱的做法其实还是蛮 low 的,现在的技术很容易就封堵掉了。
我专业版上导入证书 key 就能直接激活的
4 posts were split to a new topic: 刷 CDN 的问题
那挺好的。我这段时间启动了永久删除,永久删除是在软删除之后才可以进行,而且版主没有权限,总之非常好用,感觉每个站都适合加上。
我已经遇到了更严重的问题,如果用户上传图片的帖子需要审核,然后我在审核里直接拒绝了,于是帖子根本没有发出来,但审核记录里面保留了上传的图片,不知道会不会自动删除。
我还得到了两个已经验证的结论:
1.用户把上传保留在草稿中不视为孤立上传,草稿无法查看,但是默认是180天删除,暂时不确定是否有必要缩短时间到3天或者7天,太短了可能不太友好,但是180天可能会让用户误以为是永久保存,最后也许损失更大。
2.可以在S3中上传文件,然后直接引用链接,不视为孤立上传。在组件中引用链接,同样不视为孤立上传。
3.还有很坑爹的一点就是,系统操作日志是以zip文件储存在上传里的,不知道有没有必要清除,虽然都是几百kb。
不过我还是最担心如果审核记录不视为孤立上传,审核又不能删,那就麻烦了