CDN加速OSS后未响应Content-MD5

简介: OSS对于range请求不响应Content-MD5,这份响应被CDN缓存下来。后续客户端请求到对应的CDN节点,不管是否是range请求,由于CDN已经有缓存,就会直接返回之前缓存的不带Content-MD5的Response信息。

问题描述

使用CDN加速OSS以后发现返回的响应头里没有带Content-MD5头了,而直接通过OSS域名访问是会返回Content-MD5头的。刷新CDN缓存以后部分节点会返回Content-MD5,但是还是会有部分节点不返回Content-MD5。

< HTTP/1.1 200 OK

< Server: Tengine

< Content-Type: video/mp4

< Content-Length: 17369965

< Connection: keep-alive

< Date: Mon, 07 Jun 2021 11:33:58 GMT

< x-oss-request-id: 60BE042629F7AC37327E477F

< Vary: Origin

< x-oss-cdn-auth: success

< Accept-Ranges: bytes

< ETag: "D1EF74CEC4DE1F89F03A30C4647869F4"

< Last-Modified: Wed, 26 May 2021 04:10:19 GMT

< x-oss-object-type: Normal

< x-oss-hash-crc64ecma: 1958374103060741818

< x-oss-storage-class: Standard

< x-oss-version-id: null

< x-oss-server-time: 4

< Ali-Swift-Global-Savetime: 1623065639

< Via: cache25.l2cn3037[0,0,200-0,H], cache47.l2cn3037[1,0], cache47.l2cn3037[1,0], vcache39.cn2038[20,20,200-0,M], vcache33.cn2038[22,0]

< Age: 0

< X-Cache: MISS TCP_MISS dirn:-2:-2

< X-Swift-SaveTime: Mon, 07 Jun 2021 12:16:47 GMT

< X-Swift-CacheTime: 2592000

< Access-Control-Allow-Origin: *

< Timing-Allow-Origin: *

< EagleId: 73eec0b516230682076361320e

<

{ [2920 bytes data]

100 16.5M  100 16.5M    0     0   766k      0  0:00:22  0:00:22 --:--:--  914k

* Connection #0 to host tutor-trans-video-online.fbcontent.cn left intact

排查过程

1. 排查CDN的日志

虽然X-Cache是MISS,没有命中缓存回源的,但是通过以下的Via信息可以看到是命中L2的缓存了,L2节点是l2cn3037

Via: cache25.l2cn3037[0,0,200-0,H], cache47.l2cn3037[1,0], cache47.l2cn3037[1,0], vcache39.cn2038[20,20,200-0,M], vcache33.cn2038[22,0]

通过Ali-Swift-Global-Savetime: 1623065639可以知道该文件缓存到CDN节点的时间,unix时间戳1623065639转换成北京时间是2021-06-07 19:33:59。于是查对应时间段l2cn3037这个节点的日志信息,发现该L2上记录的状态码都是206,同时带了http_range字段,说明L2是Range回源OSS的,因此OSS响应了206。

2. 查OSS日志

查对应时间段OSS的实时日志,发现OSS日志字段记录的content_md5为"-",说明OSS确实没有响应content_md5字段。测试发现直接range请求OSS,OSS也是不会响应Content-MD5的,经确认OSS的策略的确如此。

3. 查CDN的range回源配置

确认CDN的range回源配置,发现配置的是on,也就是开启了range回源

问题原因

整个过程是19:33:59有一个客户端发起了range请求,由于CDN域名配置了range回源,因此CDN会按照512KB的大小range回源OSS,OSS接到range请求以后响应状态码206并且不响应Content-MD5,这份响应被CDN缓存下来。后续客户端请求到对应的CDN节点,不管是否是range请求,由于CDN已经有缓存,就会直接返回之前缓存的不带Content-MD5的Response信息。

PS:为什么当时刷新缓存以后通过CDN去访问可以看到有Content-MD5?
答:因为当时刷新缓存以后,重新去访问的时候,客户端发起的不是range请求,而是普通的请求;与此同时,由于CDN上配置的range回源是"on",并不是"force",也就是不是强制range回源,因此CDN这种情况下回源的时候并没有发起range请求,OSS是会响应Content-MD5的。

解决方案

OSS会返回CRC,如果要做文件一致性校验的话可以通过x-oss-hash-crc64ecma字段获取CRC来做校验。

适用于

  • CDN
  • DCDN
  • 对象存储OSS
目录
相关文章
|
4月前
|
存储 缓存 网络协议
如何使用CDN加速访问OSS存储的图片资源?
通过阿里云CDN加速OSS上的图片和视频资源,可显著提升访问速度、降低带宽成本。CDN将静态资源缓存至离用户最近的节点,减少加载时间,并提供图像处理、缓存优化等功能,提升用户体验。同时,CDN还支持访问数据分析,助力运营决策。本文详解如何通过CDN控制台配置OSS加速,包括添加域名、设置CNAME、配置缓存策略等步骤,帮助您快速实现资源加速。
|
6月前
|
编解码 监控 算法
CDN+OSS边缘加速实践:动态压缩+智能路由降低30%视频流量成本(含带宽峰值监控与告警配置)
本方案通过动态压缩、智能路由及CDN与OSS集成优化,实现视频业务带宽成本下降31%,首帧时间缩短50%,错误率降低53%。结合实测数据分析与架构创新,有效解决冷启动延迟、跨区域传输及设备适配性问题,具备快速投入回收能力。
406 0
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5897 16
|
安全 CDN
阿里云CDN产品解读及全站加速在游戏行业的最佳实践!
阿里云CDN(内容分发网络)为全球用户提供快速、稳定、安全的内容分发加速服务,显著提升访问响应速度和成功率
267 13
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
371 1
|
存储 缓存 前端开发
使用CDN来加速OSS上存储的文件资源分发
本文为真实设备电商行业的实践,在网站有大量产品图片上传的场景下,用OSS配合CDN加速,提高了用户的访问速度、站点稳定性,并且提供了节省成本的思路。
1429 1
使用CDN来加速OSS上存储的文件资源分发
|
2月前
|
缓存 前端开发 JavaScript
适合阿里云CDN分发的文件类型有哪些?
静态文件如网页、图片、视频等适合CDN分发,可提升加载速度,减轻源站压力。动态、私有或频繁变更内容则不适合。合理选择资源包,助力高效上云。
|
2月前
|
CDN
阿里云CDN计费价格如何收费的?一文看懂
阿里云CDN计费包含基础费用与增值服务。基础费用可选按流量、带宽峰值或月结95带宽计费,默认按流量计费;增值服务如HTTPS、QUIC、WAF、实时日志等按使用量收费,不使用不计费。支持资源包抵扣,详情参考官方文档。
443 10
|
2月前
|
缓存 监控 安全
如何设置阿里云CDN的流量阈值以避免超额费用?
在信息爆炸时代,阿里云CDN助力网站加速。合理设置CDN阈值可提升性能、节省带宽、增强安全。本文详解阈值配置步骤与监控优化,助你高效利用资源。无账号者可通过翼龙云上云,享技术支持与优惠。
|
2月前
|
缓存 前端开发 JavaScript
有哪些文件适合阿里云CDN分发?
静态、高频访问且对加载速度要求高的文件(如网页、图片、视频、下载文件)适合CDN加速,可提升性能与性价比;动态内容、私有数据、频繁更新或敏感资源则不宜使用。合理选择分发策略,优化体验并降低成本。