WordPress图片迁移到OSS:从服务器爆满到流畅访问的实战记录
上个月接手了一个运营3年的WordPress博客,网站越来越慢,查了一圈发现是图片太多把服务器硬盘撑爆了。40GB的云盘已经用了38GB,再上传图片就要报错。最后决定把所有图片迁移到阿里云对象存储OSS,顺便配合CDN加速,整个过程记录下来供大家参考。
问题现场:服务器硬盘爆满的连锁反应
这个博客累积了2800多篇文章,图片文件夹wp-content/uploads占了32GB,导致一系列问题:
- 网站后台上传图片失败,提示磁盘空间不足
- 数据库备份无法保存,/tmp目录写满
- 访问速度变慢,图片加载要3-5秒
- 扩容硬盘要加钱,而且每次扩容都要停机
解决方案:OSS+CDN的迁移步骤
- 开通OSS Bucket:登录阿里云控制台,创建一个Bucket,选择标准存储+公共读权限,地域选和ECS同一个(节省流量费)
- 安装WordPress插件:用阿里云OSS插件(wp-oss-aliyun),配置AccessKey和Bucket信息
- 历史图片迁移:插件自带批量上传功能,把wp-content/uploads下的32GB图片全部同步到OSS,大约耗时2小时
- 修改图片链接:用插件的替换功能,把文章中的图片URL从
https://域名/wp-content/uploads/改为https://bucket.oss-cn-beijing.aliyuncs.com/ - 配置CDN加速:给OSS绑定CDN域名,开启HTTPS和Gzip压缩
⚠️ 重要提醒
迁移前一定要先完整备份网站和数据库,万一插件替换链接出错,可以快速回滚。
效果验证:迁移前后的性能对比
| 指标 | 迁移前(ECS存储) | 迁移后(OSS+CDN) |
|---|---|---|
| 服务器硬盘占用 | 38GB / 40GB | 6GB / 40GB |
| 图片加载时间 | 3-5秒 | 0.5-1秒 |
| 月度存储成本 | 0元(包含在ECS内) | 约15元(32GB存储) |
| 月度流量成本 | 0元(ECS带宽包月) | 约30元(CDN流量200GB) |
表面上看每月多花了45元,但带来的好处是:
- 服务器硬盘释放了32GB,可以继续用2年不用扩容
- 图片访问速度提升5倍,用户体验明显改善
- 全国访问速度一致(CDN多节点加速)
- 未来图片继续增长不用担心空间问题
省钱技巧:如何降低OSS成本
💡 成本优化三板斧
技巧1:买存储包更划算
如果确定长期使用,直接买OSS存储包(40GB/年只要9元),比按量付费便宜一半。
技巧2:冷图片用低频存储
超过半年没访问的旧文章图片,可以转为低频存储(价格只要标准存储的一半),OSS支持生命周期自动转换。
技巧3:开启图片处理
用OSS自带的图片处理功能,自动压缩图片质量(quality=80),可以减少30-50%的流量消耗。
推荐配置:个人博客OSS方案
- 存储包: 40GB/年(9元)
- CDN流量包: 100GB/半年(约16元)
- 总成本: 约50元/年
踩过的坑和注意事项
坑1:迁移后原服务器图片别急着删
保留1-2周观察,确认所有文章图片都正常显示后再删除。我遇到过几篇文章用了外链图片,插件没替换成功。
坑2:CDN缓存刷新要等一会
修改图片后,CDN节点的旧文件可能还存在,要手动刷新CDN缓存(控制台有刷新功能)。
坑3:OSS防盗链要配好
公共读的Bucket容易被盗链,在OSS控制台配置Referer白名单,只允许自己的域名访问,避免流量被刷。
常见问题
总结
把WordPress图片迁移到OSS是个一劳永逸的方案,不仅解决了服务器空间不足的问题,还提升了访问速度。虽然每月多花几十块钱,但换来的是长期的稳定和可扩展性。如果你的网站图片已经超过10GB,强烈建议尽早迁移到OSS,晚迁不如早迁,数据越多迁移越麻烦。