对象存储如何配合个人博客使用
用对象存储存放博客图片和静态资源,通过 CDN 加速访问,减轻服务器带宽压力。
为什么需要对象存储
博客的图片越来越多,直接放在服务器上既占空间又费带宽。每次用户访问页面,图片都要从服务器加载,带宽成本很高。
最近把图片迁移到了对象存储上,配合 CDN 加速,效果好很多。服务器只需要提供 HTML 和 API,图片走 CDN 分发。
对象存储配置
选择服务
对象存储选择的是 S3 兼容的服务,大部分云厂商都提供。价格比直接买服务器带宽便宜很多,按量计费对个人站点来说基本可以忽略不计。
上传文件
上传用的是 AWS CLI,和 S3 的命令完全兼容:
# 配置凭证
aws configure
# 上传单个文件
aws s3 cp image.jpg s3://my-bucket/images/
# 批量上传
aws sync ./public/images s3://my-bucket/images/Bucket 权限
把 Bucket 设为公开读,这样 CDN 和用户可以直接访问图片:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}CDN 加速配置
把对象存储的 Bucket 设为 CDN 源站,用户访问图片时走 CDN 节点而不是直接打到存储上。
配了缓存策略,图片类资源缓存 30 天,这样同一个图片基本只需要回源一次。CDN 还支持自动 WebP 转换,能进一步减少流量。
Next.js 配置
博客用的是 Next.js 的 Image 组件,需要把对象存储域名加到配置里:
// next.config.ts
const nextConfig = {
images: {
remotePatterns: [
{
protocol: "https",
hostname: "cdn.example.com",
},
],
},
};这样 Next.js 的 Image 组件可以正常加载远程图片,还会自动生成优化后的尺寸。
效果
迁移完成后:
- 服务器带宽占用降了 80% 以上
- 图片加载速度提升明显,CDN 节点比海外服务器延迟低很多
- 存储成本按量计费,比买带宽便宜
对个人博客来说,对象存储 + CDN 是一个性价比很高的方案。
相关推荐
互动