4 月更新:慢工出细活
这次比平常晚了一点,抱歉!不过内容真的很扎实。有有数字撑腰的效能提升、更友善的初次使用体验、一些后端健康维护工程,还有中国地区支援的首次公开 Beta。
效能提升
我们在底层做了很多事让 tomomai 跑起来更快,成果也慢慢浮现了。以下是 Largest Contentful Paint (LCP) 改善前后的数字:
| 地区 | 改善前 | 改善后 |
|---|---|---|
| 日本 | 808 ms | 432 ms |
| 香港 | 3,180 ms | 780 ms |
| 中国 | 3,208 ms | 2,522 ms |
日本跟香港进步幅度非常明显。中国还是比我们想要的慢,主要原因是连到 Cloudflare R2 的速度对中国大陆的流量不太友善。我们正在评估中国专用的资产 CDN,应该能在之后的更新让那个数字跟其他地区拉近。
到底改了什么?
CJK 字型子集化
这是这次最大的单一改善。以前用日文、繁体中文或简体中文开 tomomai,每种语言都要一次下载 4–7 MB 的超大字型档。我们用 fonttools 重写了字型处理流程,把每个 Noto Sans CJK 字型(JP/TC/SC)切成 20 个 unicode-range 区块。浏览器现在只会去抓画面上实际出现的那些字,再也不用为那几千个你根本不会看到的字买单。
我们也把 CJK 字型的预载整个拿掉了。现在只有 Inter(拉丁字母)会预载,CJK 字型改成依照语系按需载入。
Bundle 最佳化
除了字型之外,我们还做了几个网路面的改善:
- 分页动态载入:比较重的 Dashboard 分页(Stats、Recommendations、Export、History、Events、Recents、Developer、Albums)现在只有你切过去的时候才会载入程式码,不会在第一次开页面就全部塞进来。
- Tree-shaking:帮
lucide-react、recharts、date-fns还有几个 Radix UI 套件加了optimizePackageImports,只有实际有用到的图示跟元件才会被打包进去。 - Bundle 分析器:接上了
@next/bundle-analyzer(用ANALYZE=true开启),之后可以持续追踪这块。
全新 OG 图片
现在在 Discord、Twitter 或任何会显示连结预览的地方分享 tomomai 的连结,就能看到一张正经的预览图,不再是空白卡片了。
网站的所有主要页面都加了自订 Open Graph 图片:

歌曲详细 - 封面、歌名、歌手、难易度

玩家个人资料 - 显示名称、Rating、头像、地区

首页

资料库首页
OG 图片渲染器现在改用本地内建的字型,不会再在渲染的时候去跟 Google Fonts 要字了,生成速度更快,也不依赖外部服务。
新功能:新手引导流程
新用户再也不会一登入就被丢进 Dashboard 里迷路了。全新的新手引导流程是一个三步骤的动画对话框:
- 设定使用者名称:有即时可用性检查跟自动建议,选一个你喜欢的 tomomai 使用者名称。这里也能设定要不要让你的个人资料公开。
- 选择地区:从几张有主题风格的卡片里选你的地区。
- 完成:可以开始用了。

步骤 1:设定使用者名称

步骤 2:选择地区
旧版只有单一栏位的使用者名称对话框已经拿掉了。已经有帐号的人不受影响。
技术面
中国地区 Beta
中国地区支援正式进入 Beta。CN 用户现在能透过以下两种方式把 tomomai 接到 maimai DX 资料:
- LXNS(落雪咖啡屋 maimai DX 查分器):OAuth 串接,不需要处理密码。同步玩家资料和分数。最近游玩记录和活动资料这个来源暂不支援。
- 我们自己的 HTTP Proxy:给想直接用原生 maimai 帐号的玩家。
要把 CN 支援做好,后端需要大幅度的结构调整。我们的主要资料抓取程式码已经长成一个 2,100 行的大怪物。为了能够干净地支援每个地区不同的资料来源,我们把它重构成一个 src/lib/maimai/ 套件,依照领域(player、songs、recents、albums、events)分好资料夹,各自有独立的抓取、解析、存储模组。这样以后新增跟维护资料来源就方便多了。
CN 地区还在 Beta,边边角角可能还不太完美,欢迎到 Discord 回报。
储存:把玩家头像搬到 R2
随着网站规模成长(从 2025 年 10 月每月约 83 次快照,到 2026 年 4 月每月超过 2,190 次),控制资料库储存空间变得越来越重要。
最有效的改善之一就是把玩家头像图示从资料库里搬出去。以前是把 base64 编码的图片资料直接存在 Postgres,每笔平均 36 KB,而且同样的图示在每个快照都重复存一份。把头像搬到 R2 物件储存之后(以内容定址,相同的图示只存一份),资料库可以释放约 315 MB 的空间。等正式环境的搬移完成,资料库总量预计会从约 1,167 MB 降到约 850 MB。
这只是第一步,我们也有计划应对用户持续增加带来的后续储存成长。
April Fools 2026
有人发现 4 月 1 日的 tomomai ai 彩蛋吗?如果错过了,或是想再玩一次,April Fools 模式现在可以用可切换的 Flag 手动开启。在 Flag 覆写设定里打开就好,不用等到明年。
欢迎加入 Discord 聊聊这次的更新:https://discord.gg/jZqQHr3UDq
想帮忙翻译?这边请:https://crowdin.com/project/tomomai
祝大家刷分愉快!