Logo花火漫画开发文档

Supabase Storage

用户头像与个人 Banner 的存储方案

用途

Supabase Storage 在本项目中仅用于用户个人资源的存储:

  • 用户头像avatars bucket)
  • 用户 Bannerbanners bucket)

漫画图片资源不经过 Supabase Storage,而是由上传工具通过 Rclone 直接写入 Cloudflare R2,再由 CDN 分发。详见 CDN 架构

设计原则

以 UUID 命名实现覆盖

客户端在上传头像 / Banner 时,将文件重命名为用户的 UUID。Supabase Storage 的 upsert 行为使得同名文件自动覆盖旧文件,无需手动删除历史版本,天然实现「新的替换旧的」。

avatars/{user_uuid}.webp    ← 每次上传都覆盖同一个文件
banners/{user_uuid}.webp    ← 同理

强制 WebP 格式

用户原始图片格式多样(JPEG、PNG、HEIC 等),客户端在上传前统一转换为 WebP 格式,原因:

  • 体积比 JPEG 小 25-35%,节省存储空间和带宽
  • 所有现代浏览器和 Android 均原生支持
  • 统一格式简化后端逻辑,不需要处理多种 MIME 类型

仅对会员开放

为控制存储空间和成本,头像与 Banner 的自定义上传功能仅对 VIP 会员开放。非 VIP 用户使用系统默认头像和空白 Banner。

Bucket 概览

On this page