图片与媒体管理:基于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获取图片:

  1. 图片清单:图片位置的中心化注册表
  2. S3存储桶:产品图片存放于对象存储
  3. WebP格式:为快速加载优化的图片格式
  4. 回退机制:真实图片缺失时显示占位图

图片缓存

我们通过缓存机制实现内存缓存:

  • 全局缓存:图片查找的内存缓存层

  • 部件/SKU键值索引:通过标识符快速查找

  • 缓存失效:库存更新时通过钩子触发刷新

图片目录结构

按部件标识符组织图片:

  • 部件图片:按部件ID分类存储

  • SKU图片:机箱、主板、WiFi组合配置

  • 视频文件:与图片同目录存储

图片处理

针对不同场景进行图片处理:

  • 完整图片产品页面使用

  • 裁切图片数据手册(仅首图)

  • 占位图片:无可用图片时的备用方案

CloudFront分发

通过CDN网络分发图片:

  • 边缘缓存:覆盖全球的边缘节点

  • 降低延迟:用户从最近节点获取内容

  • DDoS防护:内置攻击防护机制

总结

图片与媒体管理系统提供:

  • S3存储:产品图片、数据手册、客户标识存储

  • WebP格式:为快速加载优化的图片格式

  • 图片清单:图片位置的中心化注册表

  • 缓存机制:提升性能的内存缓存

  • CloudFront分发:快速的全球内容分发