缓存策略:多层性能优化
本文阐述我们如何通过在各层级实施缓存来实现全球快速页面加载。
问题:未缓存的请求速度慢
若无缓存,每次页面加载都需要:
-
数据库查询:获取产品数据、库存水平、价格信息
-
API调用:调用外部服务获取运费、支付信息
-
计算处理:价格计算、可用性检查
-
图片加载:产品图片、缩略图
缓存通过存储结果供重复使用,消除了重复工作。
解决方案:多层缓存
我们在五个层级实施缓存:
- 浏览器缓存:用户设备存储静态资源
- CDN缓存:CloudFront边缘节点全球缓存内容
- 应用缓存:Valkey存储频繁访问的数据
- 数据库缓存:Valkey置于数据库前端
- AI缓存:DeepSeek缓存系统提示
缓存层级
浏览器缓存(CloudFront)
CloudFront 提供具有适当TTL的浏览器缓存:
-
图片:长TTL(24-72小时)
-
CSS/JS:版本化并带缓存破坏机制
-
API响应:短TTL或无缓存
CDN缓存(CloudFront)
CloudFront在边缘节点缓存内容:
应用缓存(Valkey)
Valkey 提供内存缓存:
数据库缓存
Valkey置于数据库前端:
-
产品数据:为性能而缓存
-
零件成本:为价格计算而缓存
-
SKU列表:为产品列表而缓存
-
图片清单:为图片加载而缓存
AI缓存(DeepSeek)
DeepSeek提供提示词缓存:
-
系统提示:为效率而缓存
-
缓存命中:减少令牌使用量
-
缓存未命中:生成新内容
翻译缓存
翻译缓存系统 使用多层架构:
-
Valkey:短语表缓存在内存中
-
文件:短语表持久化存储在JSON文件中
-
回退机制:基于哈希的遗留缓存保持向后兼容性
缓存失效
我们在以下情况使缓存失效:
-
产品更新:使产品缓存失效
-
库存变更:使库存计数缓存失效
-
内容更新:使页面缓存失效
-
翻译更新:使翻译缓存失效
缓存组织
Valkey缓存按功能组织:
-
会话:用户认证状态
-
自动补全:搜索建议数据
-
热门查询:频繁搜索的术语
-
短语映射:筛选器提取数据
-
零件成本:价格计算数据
总结
我们的缓存策略提供:
-
多层架构:浏览器、CDN、应用、数据库
-
高效性能:Valkey实现快速内存访问
-
智能优化:AI提示词缓存节省成本
-
可靠保障:多重回退机制