CDN加速OSS后未响应Content-MD5

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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
相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
6月前
|
存储 安全 API
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
286 2
|
1月前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5442 16
|
2月前
|
安全 CDN
阿里云CDN产品解读及全站加速在游戏行业的最佳实践!
阿里云CDN(内容分发网络)为全球用户提供快速、稳定、安全的内容分发加速服务,显著提升访问响应速度和成功率
|
5月前
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
|
6月前
|
缓存 API 对象存储
一看就懂:我是如何使用OSS提供的CDN服务的?
一看就懂:我是如何使用OSS提供的CDN服务的?
391 1
|
6月前
|
存储 缓存 前端开发
使用CDN来加速OSS上存储的文件资源分发
本文为真实设备电商行业的实践,在网站有大量产品图片上传的场景下,用OSS配合CDN加速,提高了用户的访问速度、站点稳定性,并且提供了节省成本的思路。
731 1
使用CDN来加速OSS上存储的文件资源分发
|
4月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
20天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
4月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。

热门文章

最新文章