网站图片放OSS好还是服务器好?一个真实案例告诉你答案
去年帮朋友优化一个WordPress图片站,他遇到的问题很典型:网站有2万多张图片,全放在服务器里,导致磁盘快满了,加载速度也越来越慢。他问我要不要迁移到OSS,犹豫的点是怕麻烦、怕贵。最后我们做了迁移,效果立竿见影。今天就用这个案例,讲清楚图片存储到底该怎么选。
问题场景:图片站的困境
朋友的网站是个摄影作品分享站,WordPress搭建,主要问题有三个:
服务器买的是40GB系统盘,图片占了35GB,每次上传新照片都提示空间不足。扩容要重启服务器,而且价格不便宜。
首页有50张缩略图,全从服务器加载,带宽只有3Mbps,访客打开首页要等7-8秒。跳出率很高。
图片和代码混在一起,每次备份要打包几个GB的数据,传输慢还占用服务器资源。
这三个问题,其实都指向一个解决方案:把图片从服务器剥离出来,放到对象存储。
解决方案:迁移到OSS
我们的迁移方案分三步:
- 开通OSS存储桶:在阿里云控制台创建一个Bucket,选择标准存储类型,地域选华东(和服务器同区域,内网传输免流量费)
- 批量上传历史图片:用ossutil工具把服务器上的wp-content/uploads目录整个同步到OSS,大概花了2小时
- 配置WordPress插件:安装OSS插件,让新上传的图片自动存到OSS,文章里的图片链接自动替换成OSS地址
迁移过程中唯一的小坑是图片防盗链,一开始没配置Referer白名单,结果其他网站直接盗链我们的OSS图片,产生了额外流量费。后来加了防盗链规则就好了。
效果对比:迁移前后的数据
迁移完成后,我们跑了一个月的数据对比:
| 指标 | 迁移前(服务器存储) | 迁移后(OSS存储) |
|---|---|---|
| 存储成本 | 40GB盘 ≈ 80元/月 | 30GB OSS ≈ 5元/月 |
| 流量成本 | 包含在带宽费中 | 300GB流量 ≈ 30元/月 |
| 总成本 | 约80元/月 | 约35元/月(省45元) |
| 首页加载时间 | 7-8秒 | 2-3秒(CDN加速) |
| 服务器磁盘占用 | 35GB(图片)+ 5GB(代码) | 5GB(纯代码) |
| 备份时间 | 40分钟 | 5分钟(只备份代码和数据库) |
最直观的变化是加载速度,从8秒降到3秒,跳出率从65%降到40%。成本也降了一半多。
什么情况适合用OSS?
根据这个案例,总结几个适合迁移OSS的信号:
如果网站静态资源超过5GB,放服务器会挤占系统盘空间,影响程序运行。OSS可以存几十TB,按需扩容。
用Chrome开发者工具看Network,如果70%以上的流量是图片、CSS、JS,就该考虑走CDN+OSS,减轻服务器压力。
OSS默认三副本冗余,数据可靠性99.9999999999%(12个9),比自己在服务器上备份安全得多。
OSS支持实时缩略图、水印、格式转换,不用自己写代码。比如访问图片URL加个参数 ?x-oss-process=image/resize,w_300 就能生成300px宽的缩略图。
什么情况不用OSS?
但也不是所有网站都要用OSS,以下情况直接放服务器更简单:
❌ 不适合OSS的场景
- 图片总量小于1GB:迁移的时间成本大于收益,直接服务器存就行
- 纯内网应用:没有公网访问需求,OSS的CDN加速用不上
- 极低预算项目:如果每个月连10块钱OSS费用都要省,那还是放服务器
- 敏感数据:涉及用户隐私的文件,放服务器自己管理更可控
还有一种中间方案:图片放OSS,但不开公网访问,只做内网存储扩容。这样能解决磁盘空间问题,但省不了流量费。
迁移成本和时间
最后说说大家关心的迁移成本。以一个中型WordPress站为例:
- 存储费用: 50GB约8元/月(标准存储)
- 流量费用: 500GB约50元/月(按实际用量)
- 迁移工具: 免费(ossutil命令行工具)
- 时间成本: 半天到1天(含测试)
如果不想自己动手,找外包代迁移大概500-1000元。但其实跟着文档操作,技术门槛不高。
有个省钱技巧:先把历史图片走内网迁移(不产生流量费),然后开CDN加速,流量费能打7折左右。
常见问题
总结
回到最初的问题:图片放服务器还是OSS?如果你的网站图片超过5GB、月访问量过万、想提升加载速度,OSS是更好的选择。成本不但不会增加(配合CDN反而更便宜),运维也更省心。朋友的图片站迁移后,他说最大的感受是「终于不用担心磁盘空间了,可以安心上传新作品」。这就是OSS的价值。