跳到主内容
笔记系统教程

图片放 R2,还是放服务器

不是越贵越好,看你的图有多少。

3 分钟阅读0 次浏览

这个问题我被问过很多次。

答案不绝对,看你的站有多大、图有多少、以后想不想搬家。

两种存法的区别

放服务器,就是把图片和网站程序放在同一台机器上。上传走服务器,访问也走服务器。

放对象存储,图片单独存在另一个地方,服务器只存一个地址。访问图片的时候,浏览器直接去那个地址拿,不经过你的服务器。

差别就在这一句:图片的流量,走不走你的服务器。

什么时候本地就够

图不多,几十张,访问量也不大,本地完全够用。

配置简单,不用额外申请账号,不用配密钥,传上去就能用。对刚开始的站,这是最省事的选择。

但有两个前提:服务器磁盘要够,流量要够。图片是吃流量的大户,一张封面几百 K,一天几百次访问就是几百兆。

什么时候必须上对象存储

三种情况,中一条就该换。

第一,图超过几百张。本地目录会越来越乱,备份越来越慢,迁移的时候要打包传半天。

第二,访问量上来了。图片流量把服务器带宽占满,页面就会变慢,这时候不是优化代码能解决的。

第三,你想让服务器随时能换。图片在本地,换服务器就得整体搬迁;图片在对象存储,换个地址就行,几分钟的事。

成本怎么算

对象存储不贵,但也不是免费。

存储按容量算,流量按出网算。个人站一个月通常几块钱到几十块钱,比升级服务器带宽便宜。

要注意的是请求次数。图片被反复请求,次数会累积。做好缓存,让浏览器和 CDN 记住图片,能省掉大部分请求。

迁移要注意什么

从本地迁到对象存储,不是把文件传上去就完事。

数据库里存的图片地址要跟着改。如果当初存的是完整地址,改起来很麻烦;如果存的是相对路径,改一个前缀就行。

这也是为什么一开始就要想清楚:图片地址别写死域名。

我的建议

刚起步,本地就行,别为了以后可能会大提前上复杂方案。

图超过三百张,或者开始觉得备份变慢、页面变卡,就换对象存储。换的时候一次性迁完,别一半一半,否则以后自己都搞不清哪张图在哪。

存储这件事,够用就好。真正的成本不是那几块钱,是你要花多少精力去维护它。

防盗链和权限

图片放在对象存储,默认是公开可读的。任何人拿到地址都能直接打开,也能嵌到别的站上。

如果你的图有成本,建议开防盗链:只允许你自己的域名引用,别的站引用会被拒绝。

再进一步,可以给私有图片加签名地址,链接带时效,过期就失效。适合付费内容或者带密码的相册。

这两样都不难配,但要在上传之前想好,事后再改要重新处理一遍地址。

一个折中

前期本地,后期 R2。

不用一次做对,等图片多到影响部署,再迁。迁的时候新旧并存,别一次搬完。

请我喝杯咖啡