图片与媒体管理:基于CDN分发的S3存储方案
本文介绍我们如何高效存储、组织与分发产品图片。
问题背景:管理数千张图片
我们面临:
-
大量产品SKU(5000+),每个SKU包含多张图片
-
组件图片(10000+)(机箱、主板、配件)
-
核心产品的产品视频
-
多种格式需求(Web用于WebP格式,数据手册用PNG格式)
将图片存储在Web服务器会导致:
-
磁盘空间问题:数百GB的图片数据
-
分发速度慢:服务器带宽限制
-
缺乏全球CDN:国际用户访问缓慢
-
备份复杂度高:大文件备份困难
解决方案:S3 + CloudFront
我们采用AWS S3进行存储,并通过CloudFront进行分发:
-
S3:支持版本控制的弹性对象存储
-
CloudFront:实现快速分发的全球CDN
-
图片清单:图片位置的中心化注册表
-
WebP格式:比PNG/JPEG体积显著减小(30-50%)
图片存储
产品图片存储于S3:
-
S3存储桶:产品媒体的对象存储容器
-
格式标准:优化图片采用WebP格式
-
视频格式:产品视频采用MP4格式
-
清单系统:图片位置的中心化注册表
图片调用
通过图片清单从S3获取图片:
- 图片清单:图片位置的中心化注册表
- S3存储桶:产品图片存放于对象存储
- WebP格式:为快速加载优化的图片格式
- 回退机制:真实图片缺失时显示占位图
图片缓存
我们通过缓存机制实现内存缓存:
-
全局缓存:图片查找的内存缓存层
-
部件/SKU键值索引:通过标识符快速查找
-
缓存失效:库存更新时通过钩子触发刷新
图片目录结构
按部件标识符组织图片:
-
部件图片:按部件ID分类存储
-
SKU图片:机箱、主板、WiFi组合配置
-
视频文件:与图片同目录存储
图片处理
针对不同场景进行图片处理:
CloudFront分发
通过CDN网络分发图片:
-
边缘缓存:覆盖全球的边缘节点
-
降低延迟:用户从最近节点获取内容
-
DDoS防护:内置攻击防护机制
总结
图片与媒体管理系统提供:
-
S3存储:产品图片、数据手册、客户标识存储
-
WebP格式:为快速加载优化的图片格式
-
图片清单:图片位置的中心化注册表
-
缓存机制:提升性能的内存缓存
-
CloudFront分发:快速的全球内容分发