如何使用Azure Frontdoor标准缓存CDN缓存Picsum图片?
Azure Frontdoor标准CDN缓存Picsum图片的解决方案
问题根源
Picsum.photos默认返回的响应头包含Cache-Control: max-age=0这类指令,会强制CDN每次回源请求新图片,直接覆盖了你设置的缓存规则。另外,https://picsum.photos/2000这类无ID的URL本身就会随机返回图片,得确保CDN能忽略源站缓存头,牢牢缓存第一次拉取的内容。
解决步骤
配置自定义缓存规则(优先级高于全局规则)
- 进入你的Azure Frontdoor标准CDN端点的「缓存规则」页面
- 创建自定义规则,优先级设为1(比全局规则更高)
- 匹配条件选「路径」,运算符用「等于」,值填
/2000;或者选「文件扩展名」,运算符「包含」,值填.jpg,.jpeg(覆盖所有图片格式) - 缓存行为选「覆盖」,设置过期时间为30分钟
- 必须勾选「忽略源站的Cache-Control头」,这是让CDN不服从源站缓存指令的关键
验证缓存是否生效
- 通过CDN域名访问图片,比如
https://your-cdn-endpoint.azureedge.net/2000 - 打开浏览器F12的「网络」标签页,查看图片请求的响应头:
- 出现
X-Cache: HIT即表示命中CDN缓存 Cache-Control头应显示max-age=1800(对应30分钟的秒数)
- 出现
- 通过CDN域名访问图片,比如
可选优化:固定Picsum图片ID
使用带固定ID的Picsum URL,比如https://picsum.photos/id/10/2000,源站会返回固定图片,配合CDN缓存规则能获得更稳定的缓存效果。
避坑提醒
- 不要仅依赖全局缓存规则,它优先级低于自定义规则,容易被源站响应头覆盖
- 确认CDN端点已正确关联App Service,且DNS解析已生效
- 测试时避免使用Ctrl+F5强制刷新,这会跳过本地缓存并触发CDN回源请求
内容的提问来源于stack exchange,提问作者user7545296
相关产品推荐
相关产品推荐

