文 / Eric Klein
翻译 / John
原文
https://medium.com/disney-streaming/the-cdn-edge-debug-headers-can-be-your-best-friend-af06cfd9f2db
Debug Headers背景
在之前的一篇文章中,我们讨论了如何读取可能随HTTP响应返回的基本HTTP消息头,以及这些消息头是如何影响缓存的。为了能有效地帮助我们了解在不同内容分发网络(CDN)世界中缓存对象的位置以及如何实现缓存,这些只是其中的第一个构建块。若想透彻了解CDN中发生的一切,真正关键在于熟练掌握调试头文件。
这些方便的工具可让您充分利用Content Delivery Network的每项特性,虽然其中一些调试头文件十分容易在每个请求上被发布,但某些CDN只有在一些特定请求头文件存在时才会附加一部分调试头文件。为了安全起见,CDN有时甚至需要额外的请求头文件、自定义密钥与请求一起传递,以便确保合适的调试头文件被接收。
尽管最终接收的这些调试头文件相对来说较为简单,但响应中信息返回所需要的实际解释可能会为开发者带来不小的挑战。在某些情况下,开发者需要详细参考CDN指南,这些指南详尽阐述了每个标题的含义。在其他情况下,单个字符可能提供大量数据,这些数据只能通过Internet规范加以解释。
在本篇文章中,我将探讨这些调试头文件的常见优点,其所能提供的信息以及解释这些数据的最佳思路。尽管我们会在本文中关注Apache Traffic Server的调试头文件,但这不影响我们提供指向某些CDN的链接并讨论他们自己的调试头文件,以便为CDN调试的所有相关内容提供全面指导。
Debug Header示例
通过在对象请求中显示“X-Debug”,Apache Traffic Server(当使用适当的软件包进行设置时)将响应一部分庞大的基于调试的选项。传统意义上,这些选项包括一些有助于调试请求的关键信息元素。这些变量包括:缓存状态和缓存位置、事务ID、缓存密钥等。
缓存状态和位置 - 缓存状态和位置通常由“X-Cache”标头中包含的响应显示。在这里,开发者将收到有关对象缓存状态的信息以及该对象的位置(对于多层内容传送网络)。缓存状态的值通常包括:
- Miss - 对象不在缓存中。这通常意味着系统通过不断返回原点来检索有用的东西来服务对象。
- Hit-Stale - Cache中的对象,但需要对目标对象进行新鲜度检查。通常在304请求之前验证对象的新鲜度。
- Hit-Fresh - 缓存中的对象,从缓存中提供服务。
- Skipped - 缓存查找被跳过。如果配置定义了缓存旁路,通常会执行此操作。
“X-Cache”响应中的附加信息是使用上述缓存信息进行响应的服务器的名称。通过在同一个响应头中附加多个响应,CDN通常能够呈现一个对象的整个请求流。
例如,下面的响应将指示对象不在第一位置的高速缓存中;位于第二个位置的高速缓存中的对象是过时的,而在第三个位置的高速缓存中是新的。
【X-Cache:Miss server01.ats.lga.foo.com ; Hit-Stale server03.ats.lga.foo.com ; Hit-Fresh server01.ats.yyz.foo.com 】
作为此调试头的结果,您可以通过CDN查看这个对象的流程,并了解事件对您的个人请求的影响。最终数据在位于多伦多(YYZ)节点的父级缓存中进行处理。
Transaction ID - 由“X-Transaction-ID”指定,该值通常提供一个唯一的字符串,用于识别日志中的事务。这样就可以追溯分析请求,以准确地追踪单个资产的特定请求。在尝试确定特定对象在整个CDN工作流程中的行为方式以及诊断配置可能出现的任何问题时,此功能非常有用。
Cache Key - 缓存键可能是您可以评估的最有用的调试头。通过所提供的CDN解释和缓存对象的确切方式,您可以查看事件是否根据特定的请求进行了适当的配置。
例如,假设您正在从可缓存对象中删除查询字符串以提高缓存效率。虽然对该对象的请求可能是 http://www.bar.com/page/uri.jpg?123456 ,但从缓存键中删除查询参数应该会导致与x-cache-key头不同的响应。在这种情况下,缓存键应该是:
【X-Cache-Key: origin.bar.com/page/uri.jpg 】
如果您有一个更复杂的设置,X-Cache-Key也可为您带来帮助。假设您正在使用不同的字符串匹配来替换对象中的路径。通过查看缓存键您可以确保路径替换按照预期进行,从而确保针对此特定设置请求的任何资源请求流程顺畅。
这种情况的一个示例是,如果您的配置调用的是上面URI中的/page/,则在请求返回到原点时将其剥离,并用/home/替换。在这种情况下,X-Cache-Key响应如下所示:
【X-Cache-Key: origin.bar.com/home/uri.jpg 】
随着正则表达式配置和高级选项的复杂性的增加,X-Cache-Key特性成为确保CDN正确处理对象的关键因素。
有关Debug Headers的更多信息
CDN调试头的用途和种类很多。每个CDN的独特之处使得记忆这些选项和解释变得困难。
虽然有企业正在致力于将这些更好地标准化这些请求和选项,但作为CDNi在互联网工程任务组工作的一部分,这些头文件在多个不同平台上的成熟度仍旧为内容交付专家留下了一个杂乱无章的选项。
为了更好地指导您使用这些响应头文件,下面是许多流行的商业内容交付网络的示例。
- Akamai Pragma Headers:
- Fastly Debug Headers:
https://support.fastly.com/hc/en-us/community/posts/360040167211-Deciphering-Fastly-Debug-header
- Limelight Debug Headers:
https://slideplayer.com/slide/3116110/
- Catchpoint blog:
http://blog.catchpoint.com/2017/02/27/debugging-cdns-need-change/
————————————————
版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/94683714
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。