mastodon(或者说gem paperclip)一个恶心的地方是储存媒体文件时要把activity record id拆分成了一大串子目录:如图1的文件,其原本的id是104530971904218116,最后被拆成了104/530/971/904/218/116 (:id_partition部分)
我想不出这样设计有什么意义,但是最终的结果是list对象储存时会产生大量性格最贵的C类请求。misskey是将所有文件储存在根目录,list n个文件产生n次C类请求,这是最理想的情况,但是同样的n个文件mastodon要产生n*(6+2)次C类请求,+2是因为104/530/971/904/218/116 下面还有original和small两个子文件夹。
打算趁这次重构的机会把这个地方改一下,直接把所有内容写在文件名上不就行了:
':prefix_url:class/:attachment/:id_partition/:style/:filename' -> ':prefix_url:class/:attachment/:id-:style-:filename'
@fivestone 有道理,这确实是本地fs应该考虑的问题。不过目前我所有文件都是直接保存到s3上的,fs性能应该不需要我考虑了吧😂
@fivestone 我硬盘可没那么大,你用的是minio嘛?
@fivestone 我打算用backblaze b2,应该是全网最便宜了
@mashiro @fivestone 我比较过了,idrive e2最便宜。我正在使用,不过我首月账单还没来。预计存100G每月0.4刀。